根据块名附属性.doc

上传人:11****ws 文档编号:3207772 上传时间:2019-05-25 格式:DOC 页数:16 大小:163KB
下载 相关 举报
根据块名附属性.doc_第1页
第1页 / 共16页
根据块名附属性.doc_第2页
第2页 / 共16页
根据块名附属性.doc_第3页
第3页 / 共16页
根据块名附属性.doc_第4页
第4页 / 共16页
根据块名附属性.doc_第5页
第5页 / 共16页
点击查看更多>>
资源描述

1、;根据块名附属性(defun c:test()(regapp “south“)(setq sscnt 0)(prompt “n 请选择要赋属性的块:“)(if (setq ins_all (ssget (list (0 . “insert“)(repeat (sslength ins_all)(setq ss_ins_name (ssname ins_all sscnt)(setq ss_ins_att (entget ss_ins_name (list “*“)(setq ins_name (cdr (assoc 2 ss_ins_att)(setq ins_code (substr ins

2、_name 1 (vl-string-position (ascii “_“) ins_name)(setq ins_code_lst (list -3 (list “south“ (cons 1000 ins_code)(setq ss_ins_att (reverse (append (list ins_code_lst) (reverse ss_ins_att)(entmod ss_ins_att)(setq sscnt (1+ sscnt)#语法 (xdsize list)功能及参数此函数将返回当 list 被附加到一个图元中作为扩展图元数据 (Xdata) 时, 它所占用的位组大小。

3、如果不成功, 这个函数会返回 nil。list 必须是一个合法的 xdata 表, 它必须包含一个前面已经使用 regapp 函数注册过的应用程序名称。大括号()项 (群组代码 1002) 必须要对称。一个不合法的 list 将会产生一个错误, 并将适当的错误代码放置于 ERRNO 变量中。如果 Xdata 中包含一个尚未注册的应用程序名称, 则您会看到以下的错误信息(假定 COMDECHO 为 on): Invalid application name 1001 group这个 list 可以从群组代码-3 开始, 但是它并不是必须的, 因为 Xdata 可以包含多个应用程序的说明。这个表必

4、须要有一组括起来的括号:(-3 (“MYAPP“ (1000 . “SUITOFARMOR“)(1002 . “)(1040 . 0.0) (1040 . 1.0)(1002 . “)以下也是没有群组代码 -3 的相同范例。这个表刚好是第一个范例的 cdr, 但是将括起来的括号包含在里面是很重要的。( (“MYAPP“ (1000 . “SUITOFARMOR“)(1002 . “) (1040 . 0.0)(1040 . 1.0)(1002 . “)Invalid application name 1001 group这个 list 可以从群组代码-3 开始, 但是它并不是必须的, 因为 X

5、data 可以包含多个应用程序的说明。这个表必须要有一组括起来的括号:(-3 (“MYAPP“ (1000 . “SUITOFARMOR“)(1002 . “)(1040 . 0.0) (1040 . 1.0)(1002 . “)以下也是没有群组代码 -3 的相同范例。这个表刚好是第一个范例的 cdr, 但是将括起来的括号包含在里面是很重要的。( (“MYAPP“ (1000 . “SUITOFARMOR“)(1002 . “) (1040 . 0.0)(1040 . 1.0)(1002 . “)范例 (setq n2 (list “YOURAPP“ (cons 1000 “SUITOFARM

6、OR“) (cons 1040 0.0)(cons 1040 1.0) ) (regapp “MYAPP“)(ragapp “YOURAPP“)则: (xdsize (list n1 n2) 返回 48#(cons 1040 0.0)(cons 1040 1.0) ) (regapp “MYAPP“)(ragapp “YOURAPP“)则: (xdsize (list n1 n2) 返回 48扩展数据扩展数据 (xdata) 由 AutoLISP 或 ObjectARX 应用程序创建。如果图元包含扩展数据,则扩展数据将跟随在图元的普通定义数据之后。组码 1000 至 1071 描述了扩展数据。

7、下面是一个包含 DXF 格式扩展数据的图元样例。普通图元定义数据:0 INSERT5F11100AcDbEntity8TOP100AcDbBlockReference2BLOCK_A100.0200.0300.0扩展图元定义数据:1001AME_SOL10021070010711.95059E+06107051910102.5471710202.12264210302.0492011005ECD1005EE91005010400.010401.01000MILD_STEEL组码 1001 表示扩展数据的开始。与普通图元数据相比,具有扩展数据的同一组码可以出现多次,而且出现次序很重要。扩展数据按

8、注册的应用程序名分组。每个注册的应用程序组始于 1001 组码,并将程序名作为字符串值。注册的应用程序名对应于 APPID 符号表条目。应用程序可以根据需要使用任意多的 APPID 名。APPID 名是固定不变的,但是,如果当前未在图形中使用 APPID 名,则可以将它们删除。每个 APPID 名只能向每个图元附加一个数据组。在应用程序组中,扩展数据组的顺序和含义由应用程序定义。下表列出了扩展数据组码。 扩展数据组码和说明图元名组码 说明字符串 1000扩展数据中字符串的最大长度为 255 个字节(第 256 个字节是为空字符保留的)应用程序名称1001也是字符串值应用程序名的最大长度为 31

9、 个字节(第 32 个字节是为空字符保留的)注意不要将 1001 组添加到扩展数据中,因为 AutoCAD 假定它是新应用程序扩展数据组的开始控制字符串1002扩展数据控制字符串可以是“”或“”。这两个大括号使应用程序可以通过将数据细分为表来组织数据。左大括号开始一个列表,右大括号结束最近的列表。列表可以嵌套。读取特定应用程序的扩展数据时,AutoCAD 会进行检查以确保大括号是成对的图层名 1003 与扩展数据关联的图层名二进制数据1004二进制数据组织成可变长度的数据块。每个数据块的最大长度为 127 个字节。在 ASCII 格式的 DXF 文件中,二进制数据以十六进制数字字符串的形式表示

10、,每个二进制字节由两个数字字符表示数据库句柄1005图形数据库中的图元句柄注意使用 INSERT、INSERT *、XREF BIND、XBIND 或 PARTIAL OPEN 将带有句柄和扩展数据句柄的图形输入到另一个图形时,扩展数据句柄将使用其相应图元句柄的转换方式进行转换,从而使两者之间的绑定保持不变。EXPLODE 块操作或任何其他 AutoCAD 操作也是如此。如果 AUDIT 检测出扩展数据句柄与图形文件中的图元句柄不匹配,将认为存在错误。AUDIT 修复图元时,将句柄设置为 0。3 个实数1010, 1020, 1030 按 X、Y、Z 次序排列的三个实数值。可将它们用作点或矢量

11、记录。AutoCAD 永远不会改变它们的值世界空间位置1011, 1021, 1031与简单的三维点不同,世界空间坐标随扩展数据所属的父图元进行移动、缩放、旋转和镜像。对父图元使用 STRETCH 命令并且此点位于选择窗口中时,世界空间位置也会被拉伸。世界空间位移1012, 1022, 1032也是一个随着父图元进行缩放、旋转和镜像(而不是移动或拉伸)的三维点世界方向1013, 1023, 1033也是一个随着父图元旋转和镜像(而不是移动、缩放或拉伸)的三维点实数 1040 一个实数值距离 1041 一个随着父图元进行缩放的实数值比例因子 1042也是一个随着父图元进行缩放的实数值。距离和缩放

12、因子的差别由应用程序定义整数 1070 一个 16 位整数(有符号或无符号)长整数 1071 一个 32 位有符号(长)整数SetXData 方法设置与对象关联的扩展数据 (外部数据) 。参阅 | 示例语法 object.SetXData XDataType, XData Object所有图形对象 , AttributeReference, Block, Dictionary, DimStyle, Group, Layer, Linetype, PlotConfigurations, RegisteredApplication, TextStyle, UCS, View, Viewport;

13、XRecord使用该方法的对象。 XDataTypeVariant变体 (短整数数组); 仅用于输入 XData变体数组; 仅用于输入 说明 扩展数据是由 ObjectARX 或 AutoLISP 编写的程序创建的特定实例数据的实例。该数据可添加到任何对象中。它跟随在对象定义数据的后面,并按一定的顺序存入文档中。(AutoCAD 保留此信息,但不使用。)GetXData 方法获取与对象关联的扩展数据(XData) 。参阅 | 示例语法 object.GetXData AppName, XDataType, XDataValue Object所有图形对象 , AttributeReference

14、, Block, Dictionary, DimStyle, Group, Layer, Linetype, PlotConfigurations, RegisteredApplication, TextStyle, UCS, View, Viewport; XRecord使用该方法的对象。 AppNameString字符串; 仅用于输入使用 NULL 字符串可返回所有与对象关联的数据,而不考虑创建它的应用程序。如提供一个应用程序名则只返回由指定应用程序创建的数据。 XDataTypeVariant变体 (短整数数组); 仅用于输出 XDataValueVariant变体 (变体数组); 仅用

15、于输出 说明 扩展数据是由 ObjectARX 或 AutoLISP 编写的程序创建的特定实例数据的实例。该数据可添加到任何对象中。它跟随在对象定义数据的后面,并按一定的顺序存入文档中。(AutoCAD 保留此信息,但不使用。)我想更改一个属性块中包含的所有实体对象的图层,使之与该块本身的图层一致(setq ss (ssget “X” (0 . “insert”) i0 -1)(while (setq ent (ssname ss (setq i0 (1+ i0)(setq la (cdr (assoc 8 (entget ent)color1 (cdr (assoc 62 (entget e

16、nt)exit0 nil)(while (and (not exit0)(setq ent (entnext ent)(setq entg (entget ent)(setq entg (subst (cons 8 la) (assoc 8 entg) entg)entg (subst (cons 62 color1) (assoc 62 entg) entg)(entmod entg)(setq exit0 (assoc -2 entg)但是结果并满意,属性块中最后一个实体对象无法更改。一个属性块的数据表如下:(NO.1)(-1 . ) (0 . “INSERT”) (330 . )(5 .

17、 “15E”) (100 . “AcDbEntity”) (67 . 0) (410 . “Model”) (8 . “植被层”) (6 .“18) (48 . 0.5) (100 . “AcDbBlockReference”) (66 . 1) (2 . “G1012) (10339.028 414.377 -0.0440077) (41 . 0.5) (42 . 0.5) (43 . 0.5) (50 . 0.875457)(70 . 0) (71 . 0) (44 . 0.0) (45 . 0.0) (210 0.0 0.0 1.0)用(entnext)依次提取上述块所包含的属性表。第一

18、次(entnext) :(NO.2)(-1 . ) (0 . “ATTRIB”) (330 . ) (5 .“15F”) (100 . “AcDbEntity”) (67 . 0) (410 . “Model”) (8 . “0) (100 .“AcDbText”) (10 339.738 414.566 -0.0440077) (40 . 0.849) (1 . “93720) (50 .0.875457) (41 . 1.0) (51 . 0.0) (7 . “Standard”) (71 . 0) (72 . 0) (11 339.412414.838 -0.0440077) (210

19、0.0 0.0 1.0) (100 . “AcDbAttribute”) (2 . “CODE”) (70. 1) (73 . 0) (74 . 2)第二次(entnext) :(NO.3)(-1 . ) (0 . “SEQEND”) (330 . ) (5 .“160) (100 . “AcDbEntity”) (67 . 0) (410 . “Model”) (8 . “植被层”) (6 . “18)(48 . 0.5) (-2 . )第二次(entnext) :nil用(setq entg (subst (cons 8 la) (assoc 8 entg) entg)entg (subs

20、t (cons 62 color1) (assoc 62 entg) entg)(entmod entg)对 NO.1-NO.3 的对象进行修改特定的值,NO.1 和 NO.2 的对象修改成功,但是 NO.3 的对象修改不成功。期待得到帮助的问题有:1.我的做法在 NO.3 处为什么会不成功?2.我该如何正确实现上述的修改操作?3.我想删除属性块中属性数据即上述的 NO.2 和 NO.3 的对象又该如何实现?我想更改线实体对象的图层,使之与该线本身的扩展属性一致如何将多个一样的 word 表格文件读到一个 excel 表格文件中,每个 word 文件在 excel 中为一行WORD 中的简历有

21、规律的话,或者有标记的话,是比较容易解决的。 示例:Sub test()Dim mFolder As StringDim i As IntegermFolder = “f:111“ 修改这个地方就是存放文件的地方A1 = “路径“: B1 = “文件名“With Application.FileSearch.NewSearch.LookIn = mFolder.SearchSubFolders = True.Filename = “*.*“If .Execute() 0 ThenFor i = 1 To .FoundFiles.CountIf .FoundFiles(i) ThisWorkbo

22、ok.FullName ThenCall Write_In(.FoundFiles(i)End IfNext iElseMsgBox “文件夹 “ & mFolder & “中没有所需的文件 “End IfEnd WithEnd SubSub Write_In(strFile As String)Dim intStart As Integer, intEnd As Integer, iRow As LongDim strFileName As StringintStart = InStrRev(strFile, “)intEnd = InStrRev(strFile, “.“)strFileName = Mid(strFile, intStart + 1, intEnd - intStart - 1)Application.ScreenUpdating = FalseWith Sheet1iRow = .a65536.End(xlUp).Row + 1.Cells(iRow, 1) = strFile

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育教学资料库 > 精品笔记

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。