找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 171|回复: 1

[每日一码] 打印AcDbLineTypeTableRecord线型定义引用的SHX文件名

[复制链接]

0

主题

0

回帖

28

积分

管理员

积分
28
发表于 2024-3-14 19:39:08 | 显示全部楼层 |阅读模式
  1. static void ASDKwbTEST(void)
  2. {
  3.    AcDbDatabase* pDb = curDoc()->database();
  4.   assert(pDb);
  5.   //get line type table
  6.   AcDbLinetypeTable *pLTTable ;
  7.   acdbOpenObject(pLTTable,pDb->linetypeTableId(),AcDb::kForRead);
  8.   AcDbLinetypeTableRecord *pLTRecord = NULL ;
  9.   AcDbObjectId objLTId ;
  10.   //pLTTable->getAt(采用T("TRACKS"), objLTId) ;
  11.   pLTTable->getAt(采用T("ZIGZAG"), objLTId) ;
  12.   pLTTable->close();
  13.   Acad::ErrorStatus es = acdbOpenObject((AcDbObject *&)pLTRecord, objLTId, AcDb::kForRead) ;
  14.   if(es != Acad::eOk)
  15.   {
  16.    acutPrintf(采用T("ZIGZAG linetype not loaded"));
  17.         return;
  18.   }
  19.            //iterate through the linetype
  20.   int dashes = pLTRecord->numDashes();
  21.   for(int c = 0; c < dashes; c++)
  22.   {
  23.    int shpnum = pLTRecord->shapeNumberAt(c) ;
  24.    if(shpnum != 0)
  25.    {
  26.    AcDbTextStyleTableRecord *pTSRecord = NULL ;
  27.    AcDbObjectId objTSId = pLTRecord->shapeStyleAt(c);
  28.    pLTRecord->close();
  29.    acdbOpenObject((AcDbObject*&)pTSRecord,objTSId,AcDb::kForRead);
  30.    assert(pTSRecord);
  31.    const ACHAR *pName ;
  32.    Acad::ErrorStatus es = pTSRecord->fileName(pName);
  33.    pTSRecord->close();
  34.    acutPrintf(采用T("\nName of shape file = %s"),pName);
  35.    }
  36.   }
  37. }
复制代码

0

主题

0

回帖

28

积分

管理员

积分
28
 楼主| 发表于 2024-3-14 19:39:31 | 显示全部楼层
Here is a VB.NET example:
  1. <CommandMethod("getShpName")> 采用
  2.     Public Sub GetShapeName()
  3.         Dim LtypeNames As New ArrayList()
  4.         Dim TextStyleNames As New ArrayList()
  5.         Dim db As Database = HostApplicationServices.WorkingDatabase()
  6.         Dim ed As Editor = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.Editor
  7.         Dim tm As Transaction = db.TransactionManager.StartTransaction()
  8.         Try
  9.             Dim lineTypTbl As LinetypeTable = tm.GetObject(db.LinetypeTableId, OpenMode.ForRead)
  10.             Dim ltTblRec As LinetypeTableRecord
  11.             Dim txtStyleTblRec As TextStyleTableRecord
  12.             ltTblRec = tm.GetObject(lineTypTbl("ZigZag"), OpenMode.ForRead)
  13.             'iterate through the linetype
  14.             Dim intDashes As Integer = ltTblRec.NumDashes
  15.             Dim i As Integer
  16.             Dim iShpNum As Integer
  17.             For i = 0 To intDashes - 1
  18.                 iShpNum = ltTblRec.ShapeNumberAt(i)
  19.                 If iShpNum <> 0 Then
  20.                     Dim txtStylTblRecObjId As ObjectId = ltTblRec.ShapeStyleAt(i)
  21.                     txtStyleTblRec = tm.GetObject(txtStylTblRecObjId, OpenMode.ForRead)
  22.                     ed.WriteMessage("Name of  " & txtStyleTblRec.FileName.ToString() & vbCrLf)
  23.                 End If
  24.             Next
  25.             tm.Commit()
  26.         Catch ex As System.Exception
  27.             ed.WriteMessage(ex.ToString())
  28.         Finally
  29.             tm.Dispose()
  30.         End Try
  31.     End Sub
复制代码
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|膜结构网

GMT+8, 2024-12-29 05:16 , Processed in 0.149265 second(s), 20 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表