明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2348|回复: 6

有关2005版的Field问题

[复制链接]
发表于 2004-3-24 22:18:00 | 显示全部楼层 |阅读模式
2005版中,Text 和MText对象可以使用Field域,虽然通过程序写入时可以按照其域格式写入,但程序读的时间只能读到域的值,而不能读到域的格式。通过对DXF文件的分析,Text对象如果包含有域,则有词典与其挂靠。而且DXF文件中增加了Field对象段,而该Field对象段就保存着整个Text的格式内容,但它们之间的关系是怎样的,通过程序怎样才能读到该值?通过VBA看来是无能为力,因为VBA中不提供对Field段的读写,所以只能看看这里的几位版主能否通过LISP来解决这个问题。例如,我在图形中写入:%<\AcVar acadver>%liec%<\AcVar CreateDate \f "dddd, MMMM dd, yyyy">%在图元段则有以下内容出现:
  1.    0
  2. TEXT
  3.    5
  4. E5
  5. 102
  6. {ACAD_XDICTIONARY
  7. 360
  8. E6
  9. 102
  10. }
  11. 330
  12. 1F
  13. 100
  14. AcDbEntity
  15.    8
  16. 0
  17. 100
  18. AcDbText
  19.   10
  20. 301.3990722614981
  21.   20
  22. 353.3475924764327
  23.   30
  24. 0.0
  25.   40
  26. 2.5
  27.    1
  28. 16.1s (LMS Tech)liec星期三, 三月 24, 2004
  29. 100
  30. AcDbText
复制代码
而文件的最后有这样的内容:
  1.    0
  2. FIELD
  3.    5
  4. E8
  5. 102
  6. {ACAD_REACTORS
  7. 330
  8. E7
  9. 102
  10. }
  11. 330
  12. E7
  13. 100
  14. AcDbField
  15.    1
  16. _text
  17.    2
  18. %<\_FldIdx 0>%liec%<\_FldIdx 1>%
  19.   90
  20.                2
  21. 360
  22. E9
  23. 360
  24. EE
  25.   97
  26.                0
  27.    4  91
  28.              63
  29.   92
  30.                0
  31.   94
  32.                9
  33.   95
  34.                2
  35.   96
  36.                0
  37. 300  93
  38.                1
  39.    6
  40. ACFD_FIELDTEXT_CHECKSUM
  41.   90
  42.                2
  43. 140
  44. 23773.0
  45.    7
  46. ACFD_FIELD_VALUE
  47.   90
  48.                0
  49.   91
  50.                0
  51. 301  98
  52.                0
  53.    0
  54. FIELD
  55.    5
  56. E9
  57. 330
  58. E8
  59. 100
  60. AcDbField
  61.    1
  62. AcVar
  63.    2
  64. \AcVar acadver
  65.   90
  66.                0
  67.   97
  68.                0
  69.    4  91
  70.              63
  71.   92
  72.                0
  73.   94
  74.              27
  75.   95
  76.                2
  77.   96
  78.                0
  79. 300  93
  80.                1
  81.    6
  82. Variable
  83.   90
  84.                4
  85.    1
  86. acadver
  87.    7
  88. ACFD_FIELD_VALUE
  89.   90
  90.                4
  91.    1
  92. 16.1s (LMS Tech)
  93. 301  98
  94.              16
  95.    0
  96. FIELD
  97.    5
  98. EE
  99. 330
  100. E8
  101. 100
  102. AcDbField
  103.    1
  104. AcVar
  105.    2
  106. \AcVar CreateDate \f "dddd, MMMM dd, yyyy"
  107.   90
  108.                0
  109.   97
  110.                0
  111.    4
  112. dddd, MMMM dd, yyyy
  113.   91
  114.              63
  115.   92
  116.                0
  117.   94
  118.              27
  119.   95
  120.                2
  121.   96
  122.                0
  123. 300  93
  124.                1
  125.    6
  126. Variable
  127.   90
  128.                4
  129.    1
  130. CreateDate
  131.    7
  132. ACFD_FIELD_VALUE
  133.   90
  134.                8
  135.   92
  136.                8
  137. 310
  138. 39C6604000000000
  139. 301  98
  140.              21
复制代码
对于Field对象段,帮助文件中的DXF参照也说得不清楚,很多组码只写了功能,但什么数字代表什么则没有明说。
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2004-3-26 07:58:00 | 显示全部楼层

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x

评分

参与人数 1威望 +1 金钱 +10 贡献 +5 激情 +5 收起 理由
mccad + 1 + 10 + 5 + 5 【精华】好程序

查看全部评分

发表于 2004-3-26 10:49:00 | 显示全部楼层
这个问题我没搞定,向mc请教希望能获得答案,先下载回去看看先
我现在在Linux中(单位上午时段对浏览网页限制了,不过我发现这个管理软件对Linux无效,所以我才能上来这里...hehe...
发表于 2004-3-26 12:09:00 | 显示全部楼层
接下来的问题是: 目前只有Text,MText对象才有FieldCode方法


而Attrib和Attdef都支持Field,却没有这个方法,那我们要怎么编写代码才可以获得Attrib和Attdef对象的FieldCode呢?


附图: 这是一个Insert的Block,内有属性含Field

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2004-3-26 12:15:00 | 显示全部楼层
本帖最后由 作者 于 2004-3-26 20:34:30 编辑

再问一个关于Field的问题:如上面的附图中我们可以看到Field段是有"背景"的,我只发现再options中可以切换这个背景的显示与否,但是这个选项是全局性的,.


问题1 : 能否修改某些Field的背景显示,而另一些Field的背景不显示?


问题2: 这个背景能否修改属性,如颜色,样式(类似HatchPattern),透明度,渐变,在何种情况下更新?
发表于 2004-3-29 08:17:00 | 显示全部楼层

我想attrib & attdef基本資料與text/mtext是一樣的

(defun C:TT (/ ENT ENT1 ENT2 ENT3)

(setq ENT (entget (car (nentsel)))) ;;entselnentsel

(print ENT)

(setq ENT1 (entget (cdr (assoc 360 ENT))))

(print ENT1)

(setq ENT2 (entget (cdr (assoc 360 ENT1))))

(print ENT2)

(setq ENT3 (entget (cdr (assoc 360 ENT2))))

(print ENT3)

(mapcar '(lambda (X)

(if (= (car X) 360)

(print (entget (cdr X)))

)

)

ENT3

)

(princ)

)

ent3中有

(2 . "%<\\_FldIdx 0>%liec%<\\_FldIdx 1>%")

(90 . 2)

(360 . <ENTITY NAME: 7EF75490>)

(360 . <ENTITY NAME: 7EF75498>)

--------------------------------------------

(360 . <ENTITY NAME: 7EF75490>)

(2 . "\\AcVar acadver")

---------------------------------------

(360 . <ENTITY NAME: 7EF75498>)

(2 . "\\Acvar CreateDate \\f \"dddd, MMMM dd, yyyy\"")

---------------------------------------------

把下列3句處理下即可求出fieldcode

(2 . "%<\\_FldIdx 0>%liec%<\\_FldIdx 1>%")

(2 . "\\AcVar acadver")

(2 . "\\Acvar CreateDate \\f \"dddd, MMMM dd, yyyy\"")

本來已寫好,但忘了帶來公司

Field的背景不显示?

還沒有辦法,看來是不行了

 楼主| 发表于 2004-3-29 08:35:00 | 显示全部楼层
呵呵,真没注意到TEXT和MTEXT增加了FieldCode方法。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-10-1 17:27 , Processed in 0.205739 second(s), 32 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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