tssd加载lisp_求助帖:为什么我找到的这个LISP加载完不管用呢....

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

标注所有线段(加载后只需框选所有线段便可得标注这些线段):

(defun c:LLL ()

(COMMAND "UCS" "")

(setvar "cmdecho" 1)

(SETVAR "OSMODE" 0)

(setq AcadObject (vlax-get-acad-object)

AcadDocument (vla-get-ActiveDocument Acadobject)

mSpace (vla-get-ModelSpace Acaddocument)

)

;;选取需要测量的样条曲线、圆弧、直线、椭圆

(setq en (ssget (list '(0 . "spline,arc,line,ellipse,LWPOLYLINE"))))

(setq i 0)

;;获取系统参数textsize

(setq shh (getvar "textsize"))

(setq str_hh (strcat "\n文字高度 : "))

(setq hh (getdist str_hh))

(while hh

(setvar "textsize" hh)

(setq hh nil))

;;输入标注文字高度

;;循环开始

(repeat (sslength en)

(setq ss (ssname en i))

(setq endata (entget ss))

(command "lengthen" ss "")

(setq dd (getvar "perimeter"))

(princ (strcat "\n长度=" (rtos dd 2)))

;;寻找代表图层的字符串

(setq aa (assoc 0 endata))

;;获取图层名称

(setq aa1 (cdr aa))

;;判断线条种类

(cond

((= aa1 "SPLINE")

;;如果是spline

(progn

(setq arcObj (VLAX-ENAME->VLA-OBJECT ss))

(setq startPnt1 (vla-get-ControlPoints arcObj))

(setq p1

(vlax-safearray->list (vlax-variant-value startPnt1))

)

(setq x1 (car p1))

(setq y1 (cadr p1))

(setq z1 (caddr p1))

(setq pp1 (list x1 y1 z1))

(repeat (- (/ (length p1) 3) 1)

;;循环,寻找最后一个控制点

(setq p1 (cdddr p1))

(setq x2 (car p1))

(setq y2 (cadr p1))

(setq z2 (caddr p1))

)

(setq pp2 (list x2 y2 z2))

)

)

((= aa1 "LWPOLYLINE")

;;如果是LWPOLYLINE

(progn

(setq arcObj (VLAX-ENAME->VLA-OBJECT ss))

(setq startPnt1 (vla-get-Coordinates arcObj))

(setq p1

(vlax-safearray->list (vlax-variant-value startPnt1))

)

(setq x1 (car p1))

(setq y1 (cadr p1))

(setq z1 (caddr p1))

(setq pp1 (list x1 y1 z1))

(repeat (- (/ (length p1) 3) 1)

;;循环,寻找最后一个控制点

(setq p1 (cdddr p1))

(setq x2 (car p1))

(setq y2 (cadr p1))

(setq z2 (caddr p1))

)

(setq pp2 (list x2 y2 z2))

)

)

(t

;;如果是其他种类线条

(progn

(setq arcObj (VLAX-ENAME->VLA-OBJECT ss))

(setq startPnt1 (vla-get-StartPoint arcObj))

;;获取起点

(setq endPnt1 (vla-get-EndPoint arcObj))

;;获取终点

(setq pp1

(vlax-safearray->list (vlax-variant-value startPnt1))

)

(setq

pp2 (vlax-safearray->list (vlax-variant-value endPnt1))

)

)

)

)

(setq x1 (car pp1))

(setq y1 (cadr pp1))

(setq z1 (caddr pp1))

(setq x2 (car pp2))

(setq y2 (cadr pp2))

(setq z2 (caddr pp2))

(setq x (/ (+ x1 x2) 2))

(setq y (/ (+ y1 y2) 2))

(setq z (/ (+ z1 z2) 2))

(setq pt (list x y z))

;;取得线段两端的中点

(setq ang (angle pp1 pp2))

;;获取角度

(if (> (* (/ ang pi) 180) 180)

(setq ang (+ ang pi))

)

(command "text"

"j"

"bc"

pt

""

(* (/ ang pi) 180)

(strcat "" (rtos dd 2))

""

)

(setq i (1+ i))

)

(prin1)

)

(prompt "\n <>在图中直接写出长度")

(prin1)

输入LLL导出命令时显示:

命令: lll

UCS

当前 UCS 名称: *世界*

指定 UCS 的原点或 [面(F)/命名(NA)/对象(OB)/上一个(P)/视图(V)/世界(W)/X/Y/Z/Z 轴(ZA)] :

命令: ; 错误: no function definition: VLAX-GET-ACAD-OBJECT

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值