几何尺寸与公差论坛------致力于产品几何量公差标准GD&T (GDT:ASME)|New GPS(ISO)研究/CAD设计/CAM加工/CMM测量  


返回   几何尺寸与公差论坛------致力于产品几何量公差标准GD&T (GDT:ASME)|New GPS(ISO)研究/CAD设计/CAM加工/CMM测量 » 仿射空间:CAX软件开发(三)二次开发与程序设计 » CAD二次开发 » AutoCAD二次开发 » ObjectARX(AutoLISP)
用户名
密码
注册 帮助 会员 日历 银行 搜索 今日新帖 标记论坛为已读


 
 
主题工具 搜索本主题 显示模式
旧 2009-04-26, 01:47 PM   #1
yang686526
高级会员
 
注册日期: 06-11
帖子: 14579
精华: 1
现金: 224494 标准币
资产: 234494 标准币
yang686526 向着好的方向发展
默认 [求助]打碎块保留属性值程序的问题

[求助]打碎块保留属性值程序的问题
www.dimcax.com
[求助]打碎块保留属性值程序的问题
程序是写出来了,可在运行过程中出现不少问题
首先是文字的对齐方式,块属性里为中上,而写出的文字居中,这样就导致打碎后出现版面非常乱。
再就是删除attdef过程也不太正常
请高人修改,谢谢!
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32;打碎块后保留其属性值
;思路:根据attrib写text,打碎块,删除attdef
;参考/codes/articleshow.asp?articleid=1190
( c:def ( tc ss ent1 newtxt )
( tc ( "clayer"))
( "\n请选择需要被打碎的块")
( ss ( '((0 . "insert"))))
( ( n ( ss))
( ent1 ( ( ss ( n (1- n)))))
( "clayer" (get 8 ent1))
( ( (get 0 ( ent1 ( ( (get -1 ent1))))) "seqend")
( ( (get 0 ent1) "attrib")
(
( newtxt '((0 . "text")))
( lst '(67 410 10 40 1 50 41 51 7 71 72 11 210 73))
( xh lst
( dd ( xh ent1))
( ( dd nil)
( newtxt ( newtxt ( ( xh ent1))))
)
)
( newtxt)
);progn
);if
);while
);repeat
( "explode" ss)
( ss ( "_p" '((0 . "attdef"))))
( "erase" ss "")
( "clayer" tc)
()
)
新手上路,请多指点。
d
附图和自定义的get
( get (aaaaa bbbbb /)
( ( aaaaa bbbbb))
)
该文件为 autocad r14 文件,请使用idrop将图形拖放到autocad中直接打开。
新手上路,请多指点。
d
前辈高人们帮帮忙呀!
新手上路,请多指点。
d
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35( blkexp(blkref / adwg owner lst attrs atttextstr tmptext eblks )
; ;首先把其中的可见的属性给分解成文字,然后炸开,然后删除获得的属性,并且重复运行,以便完全炸开镶嵌块--
; ( adwg(vlax-get () 'activedocument)
; owner(vlax-get blkref 'ownerid)
; owner(vlax-invoke adwg 'objectidtoobject owner)
lst '( "alignment" "backward" "color" "layer" "linetypescale" "linetype" "lineweight"
"obliqueangle" "rotation" "scalefactor" "stylename" "textalignmentpoint" "thickness" "upsidedown"))
; ( ( (vlax-get blkref 'hasattributes) -1)
; (
; ( attrs(vlax-invoke blkref 'getattributes))
; ( '((x)( ( ( ( -1 (vlax-get x 'invisible)));可见属性
( ( "" ( atttextstr(vlax-get x 'textstring)))));属性值非""
; (
; ( tmptext(vlax-invoke owner 'addtext atttextstr (vlax-get x 'insertionpoint)
; (vlax-get x 'height)))
; ( '((y)( y( y))(vlax-put tmptext y (vlax-get x y))) lst)
; )
; ))attrs)
; )
; )
; ;上面把属性改成了文字,下面就是炸开块了~~~~~
; ( eblks(vlax-invoke blkref 'explode))
; ( '((x)
( ( "acdbattributedefinition" (vlax-get x 'objectname))
; (vlax-invoke x 'delete);属性删除--
; (
( ( "acdbblockreference" (vlax-get x 'objectname));是块,则继续炸开~~~
; (blkexp x)
; )
; )
; )
; ) eblks)
; (vlax-invoke blkref 'delete)
; ()
)
d
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
;;在不爆開塊下把屬性值提出
;;by lucas
( c:def ( dd ent ent1 lst n newtxt ss tc)
()
( tc ( "clayer"))
( "\n請選擇屬性圖塊")
( ( ss ( '((0 . "insert") (66 . 1))))
( ( n ( ss))
( ent1 ( ( ss ( n (1- n)))))
( "clayer" (get 8 ent1))
(
( (get 0
( ent1 ( ( ent ( (get -1 ent1)))))
)
"seqend"
)
( ( (get 0 ent1) "attrib")
(
( newtxt '((0 . "text")))
( lst '(67 410 10 40 1 50 41 51 7 71 72 11 210))
( xh lst
( dd ( xh ent1))
( ( dd nil)
( newtxt ( newtxt ( ( xh ent1))))
)
)
(
newtxt ( newtxt
( ( 73 ( ( 74 ent1))))
)
)
( newtxt)
(vla-delete ( ent))
)
)
)
)
)
( "clayer" tc)
()
)
( get (aaaaa bbbbb /)
( ( aaaaa bbbbb))
)
要努力学习,不进则退
网络u盘:
感谢前辈们的支持。
4楼的大部分为vlax函数,我这部分实在没有学会,但我把程序记下来了,供以后参考。
5楼的程序非常实用,对我错误的程序稍做改动,便十分完美了。
再次感谢龙龙仔!
新手上路,请多指点。
yang686526离线中   回复时引用此帖
GDT自动化论坛(仅游客可见)
 


主题工具 搜索本主题
搜索本主题:

高级搜索
显示模式

发帖规则
不可以发表新主题
不可以回复主题
不可以上传附件
不可以编辑您的帖子

vB 代码开启
[IMG]代码开启
HTML代码关闭



所有的时间均为北京时间。 现在的时间是 07:04 AM.


于2004年创办,几何尺寸与公差论坛"致力于产品几何量公差标准GD&T | GPS研究/CAD设计/CAM加工/CMM测量"。免责声明:论坛严禁发布色情反动言论及有关违反国家法律法规内容!情节严重者提供其IP,并配合相关部门进行严厉查处,若內容有涉及侵权,请立即联系我们QQ:44671734。注:此论坛须管理员验证方可发帖。
沪ICP备06057009号-2
更多