caoyin大哥,一个标注尺寸与样式中定义的比较问题
www.dimcax.com
命令: (entget (car (entsel)) '("acad"))
选择对象: ((-1 . <图元名: 7ef4fe08>) (0 . "dimension") (330 . <图元名:
7ef4fd08>) (5 . "41") (100 . "acdbentity") (67 . 0) (410 . "model") (8 . "0")
(100 . "acdbdimension") (2 . "*d3") (10 324.289 149.057 0.0) (11 246.493
150.932 0.0) (12 0.0 0.0 0.0) (70 . 32) (1 . "") (71 . 5) (72 . 1) (41 . 1.0)
(42 . 155.592) (52 . 0.0) (53 . 0.0) (54 . 0.0) (51 . 0.0) (210 0.0 0.0 1.0) (3
. "iso-25") (100 . "acdbaligneddimension") (13 168.697 113.952 0.0) (14 324.289
113.952 0.0) (15 0.0 0.0 0.0) (16 0.0 0.0 0.0) (40 . 0.0) (50 . 0.0) (100 .
"acdbrotateddimension") (-3 ("acad" (1000 . "dstyle") (1002 . "{") (1070 . 343)
(1005 . "3b") (1070 . 173) (1070 . 1) (1002 . "}"))))
caoyin大哥,上面是我在特征中改了一个尺寸的第一个箭头变成我的定义的一个箭头来的,,我也看出来啦
(1070 . 343) (1005 . "3b")中"3b"是代表了我这个箭头的来的,caoyin大哥,我就是想知道一下,反过来怎么样知道"3b"就是代表我的这个箭头,还有别的用户箭头又是多少呢,这个在那查的呀,,如果是cad自带的箭头,我就会知道的呢,帮帮我呀"。caoyin大哥
d
3dimpost
4dimapost
5dimblk(已废弃,现在为对象 id)
6dimblk1(已废弃,现在为对象 id)
7dimblk2(已废弃,现在为对象 id)
40dimscale
41dimasz
42dimexo
43dimdli
44dimexe
45dimrnd
46dimdle
47dimtp
48dimtm
140dimtxt
141dimcen
142dimtsz
143dimaltf
144dimlfac
145dimtvp
146dimtfac
147dimgap
148dimaltrnd
71dimtol
72dimlim
73dimtih
74dimtoh
75dimse1
76dimse2
77dimtad
78dimzin
79dimazin
170dimalt
171dimaltd
172dimtofl
173dimsah
174dimtix
175dimsoxd
176dimclrd
177dimclre
178dimclrt
179dimadec
270dimunit(已废弃,现在使用 dimlunit 和 dimfrac)
271dimdec
272dimtdec
273dimaltu
274dimalttd
275dimaunit
276dimfrac
277dimlunit
278dimdsep
279dimtmove
280dimjust
281dimsd1
282dimsd2
283dimtolj
284dimtzin
285dimaltz
286dimalttz
287dimfit(已废弃,现在使用 dimatfit 和 dimtmove)
288dimupt
289dimatfit
340dimtxsty(参照的 style 的句柄)
341dimldrblk(参照的 block 的句柄)
342dimblk(参照的 block 的句柄)
343dimblk1(参照的 block 的句柄)
344dimblk2(参照的 block 的句柄)
371dimlwd(线宽枚举值)
372dimlwe(线宽枚举值)
d
caoyin大哥,我把定义的箭头块插了两三次,每次看到的句柄都不相同,其实我只是想知道我打开别人的dwg图时,用上面的代码,查出-3组码内容后,我想知道343或344组码的内容到底代表着是哪一个用户定义的箭头块,然后我又在命令行中输入dimblk1或dimblk2或dimblk后,我要输入这个定义箭头块的名称字符串,回车就可以改变,这就是我想要达到的目的 caoyin大哥再帮帮我,谢谢
d
(setq a (vlax-ename->vla-object (car(entsel))))
(vla-put-arrowhead1block a "块名")
(vla-put-arrowhead2block a "块名")
d
在caoyin大哥的帮助下,已实现我的梦想啦,我想得到的程序,现附上代码供参考
(defun c:caoyin (/ value ena lst dstyle lst2 blkname object cla objcolor blk1 blk2 cmd)
(vl-load-com)
(cmdbe)
(setq value '(3 "dimpost" 4 "dimapost" 40 "dimscale" 41 "dimasz" 42 "dimexo" 43 "dimdli" 44 "dimexe" 45 "dimrnd" 46 "dimdle" 47 "dimtp" 48
"dimtm" 140 "dimtxt" 141 "dimcen" 142 "dimtsz" 143 "dimaltf" 144 "dimlfac" 145 "dimtvp" 146 "dimtfac" 147 "dimgap" 148 "dimaltrnd" 69
"dimtfill" 70 "dimtfillclr" 71 "dimtol" 72 "dimlim" 73 "dimtih" 74 "dimtoh" 75 "dimse1" 76 "dimse2" 77 "dimtad" 78 "dimzin" 79 "dimazin" 170
"dimalt" 171 "dimaltd" 172 "dimtofl" 173 "dimsah" 174 "dimtix" 175 "dimsoxd" 176 "dimclrd" 177 "dimclre" 178 "dimclrt" 179 "dimadec" 271
"dimdec" 272 "dimtdec" 273 "dimaltu" 274 "dimalttd" 275 "dimaunit" 276 "dimfrac" 277 "dimlunit" 278 "dimdsep" 279 "dimtmove" 280 "dimjust"
281 "dimsd1" 282 "dimsd2" 283 "dimtolj" 284 "dimtzin" 285 "dimaltz" 286 "dimalttz" 288 "dimupt" 289 "dimatfit" 340 "dimtxsty" 341 "dimldrblk"
345 "dimltype" 346 "dimltex1" 347 "dimltex2" 371 "dimlwd" 372 "dimlwe"))
(setq ena (ssname (ssget '((0 . "dimension"))) 0))
(setq lst (entget ena '("acad")) dstyle (dxf 3 lst))
(command "-dimstyle" "r" dstyle)
(setq lst2 (tblsearch "dimstyle" dstyle) blkname (dxf 5 lst2))
(setq object (vlax-ename->vla-object ena))
(setq cla (vla-get-layer object)) (setvar "clayer" cla)
(setq objcolor (vla-get-color object))
(cond
((= objcolor 256) (setq objcolor "bylayer"))
((= objcolor 0) (setq objcolor "byblock"))
)
(command "color" objcolor)
(setq blk1 (vla-get-arrowhead1block object) blk2 (vla-get-arrowhead2block object))
(if (/= blkname blk1 blk2) (command "dimblk1" blk1 "dimblk2" blk2))
(if (/= (assoc -3 lst) nil)
(progn
(setq lst (ko-get->list-342-343-344 (ko-get->list-3 lst)))
(while (car lst)
(setq cmd (car2 (member (car (car lst)) value)))
(cond
((= (car (car lst)) 173) (command cmd "on"))
((= (car (car lst)) 340) (command cmd (vla-get-textstyle object)))
((= (car (car lst)) 345) (command cmd (vlax-get-property object 'dimensionlinetype)))
((= (car (car lst)) 346) (command cmd (vlax-get-property object 'extline1linetype)))
((= (car (car lst)) 347) (command cmd (vlax-get-property object 'extline2linetype)))
(t (command cmd (cdr (car lst))))
)
(setq lst (cdr lst))
)
)
)
(cmde)
(princ)
)
d
好贴。。。顶起来。。