几天前遇到了麻烦,需要在一条多线段上标注某点距离起点距离,在网上查了半天,找到了方法(部分代码来自网络,作者不详),可以测量距离,但是不能标注距离,之后进行了一下修
命令为zhbz,选择多线段(不能为封闭线段)—点击需要测量的位置—点击标注距离文字的位置,(注意,自己判 ...
加载lsp命令为appload 也可以添加到启动组,这样不用每次都需要加载,启动组—内容—找到.lsp文件。
改,可以实现标注。现在分享给大家。
1.加载lsp命令为appload
也可以添加到启动组,这样不用每次都需要加载,启动组—内容—找到.lsp文件。2.命令为zhbz,选择多线段(不能为封闭线段)—点击需要测量的位置—点击标注距离文字的位置,(注意,自己判断起点\终点,头尾可不一定哦,当然,你自己画的线就没问题了。)将以下代码复制到记事本,以【.lsp】为后缀命名,存储以ANSI编码形式,打开cad,【appload】加载,命令【zhbz】就可以查询并标注。[Asm] 纯文本查看 复制代码 (defun C:zhbz ( / &dis1 &k1 &n1 &p1 &ss1)
(if (null vlax-dump-object) (vl-load-com) )
(setq &ss1 '("LINE" "LWPOLYLINE" "CIRCLE" "ARC" "HELIX" "ELLIPSE" "SPLINE" "POLYLINE"))
;曲线有起点:直线,多段线,圆,圆弧,螺旋对象,椭圆,样条曲线,二维多段线
(if (and
(setq &k1 (entsel "\n请选择曲线"))
(setq &k1 (car &k1))
(member (cdr (assoc 0 (entget &k1))) &ss1);确认是曲线
(setq &p1 (getpoint "\n请选择指定点"))
(setq &p1 (vlax-curve-getclosestpointto &k1 &p1));取得最近点
(setq &n1 (vlax-curve-getParamAtPoint &k1 &p1));取得参数
(setq &dis1 (vlax-curve-getDistAtParam &k1 &n1));到起点距离
(setq b (rtos &dis1 2 2)) ;将数据结果由实数转换成字符串,且设置为两个精度,即小数点后两位
(setq a (getpoint "\n屏幕单击插入点")) ;指定插入点
(entmake (list '(0 . "text") ;建立文字图元属性列表,文字,插入点,内容,字高
(cons 10 a)
(cons 11 a)
(cons 1 b)
'(40 . 15);字高
)
)
)
(princ (strcat "\n指定点到起点距离为" (rtos &dis1)));命令行显示
)
(princ)
);复制到记事本,以【.lsp】为后缀命名,存储以ANSI编码形式,打开cad,【appload】加载,命令【zhbz】就可以查询并标注,by xkbuild,更多搜索 xkbuild |