马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
具体描述,现在有cad,每个地块中央都有一个宗地号注记,想把这个注记文字赋值到 权属线(封闭线段)的扩展属性上面。
由于是帮朋友弄,自己学了一个周末,还是没搞定,求大神帮忙调试下,
我目前的思路是:
先点选 注记,再点选 权属线,然后赋值过去。
开始的想法是想直接批量处理,调试程序太难了,而且很多语法,和 数据类型怪怪的,
暂时没搞清楚怎么处理,
有人比较懂的lisp的高手,也可以留 个qq,能帮我解决下语言方面的问题也行,
谢谢了。
(defun C:TT (/ zdh ss)
(vl-load-com)
(setq zdh(showlayer (car (entsel "\n注意选择宗地号标注点: "))))
(princ zdh)
(setLineValue (car (entsel "\n注意选择权属线: ")) zdh)
)
;再选择一个线,去赋值属性
(defun setLineValue(lineObj zdhVal / layername)
(princ (strcat "开始处理:" zdhVal))
(if(= (type lineObj) 'ENAME) ;判断是不是ename实体
(progn ( setq lineObj (vlax-ename->vla-object lineObj)) ;转换为vla对象
(vlax-dump-object lineObj t)
; TextString = "080073"
(setq layername(vla-get-layer lineObj)) ;图层名称
(princ layername)
(if (= layername "0")
(progn (princ "111")
( );这里想实现,写入扩展属性:ZDH 这个扩展属性
)
(princ "必须选择图层(0)的线段Polyline")
)
)
( alert "选择的不是ename对象" )
)
)
(defun showlayer(ent / zdh zdhlayername zhdxyz zhdxyzArray)
(setq zdh "")
(if(= (type ent) 'ENAME) ;判断是不是ename实体
(progn ( setq ent (vlax-ename->vla-object ent)) ;转换为vla对象
(vlax-dump-object ent t)
; TextString = "080073"
(setq zdh(vla-get-TextString ent )) ;取得宗地号
(setq zdhlayername(vla-get-layer ent)) ;图层名称
(setq zhdxyz(vla-get-InsertionPoint ent));指定公差、文字、块或形的插入点
;(alert zdhlayername)
(princ (= zdhlayername "编号"))
)
( alert "选择的不是ename对象" )
)
(if(= zdhlayername "编号")
(progn
(setq cc "赋值成功!")
;(setq zhdxyzArray(vlax-safearray->list (vlax-variant-value zhdxyz)))
)
(progn
(setq zdh "")
(setq cc "赋值失败:需要选择图层为(编号)的上面的编号注记")
)
)
zdh ;返回值
)
广告位,后台可以设置,支持js
您好,您暂时不能浏览帖子的全部内容,请 登录
| 没有账号? 请 注册