一个在CAD中标注坐标的LISP
使用方法:先把下面的代码复制,再打开CAD,工具-AutoLIST-VISUAL LISP编辑器-新建-粘贴-保存-退出再之就工具-AutoLIST-加载应用程序,找到你保存的那个东东,加载,关闭退出,输入ZBBZ就可以啦!!!!!
(defun C:zbbz( / zb gd cld osm )
(setq osm (getvar"osmode"))
(setvar "osmode" 33)
(setq gd (getreal "指定标注文字高度:>"))
(if (= gd nil) (setq gd 0.5))
(while (setq zb (getpoint "指定坐标点:"))
(setq cld(getpointzb"指定文字插入点:"))
(entmake (list
'(0 . "LINE")
'(67 . 0)
'(8 . "0")
(list10(car zb)(cadr zb) 0)
(list 11 (car cld) (cadr cld)0)
'(210 0.0 0.0 1.0)
)
)
(entmake (list
'(0 . "text")
(list 10(+ (car cld) gd)(car(cdr cld)) )
(cons 40 gd)
(cons 1 ( strcat"X="(rtos (cadr zb)2 3)))
'(50 . 0)
)
)
(entmake (list
'(0 . "text")
(list 10(+ (car cld) gd)
(- (car(cdr cld))(+ gd (/ gd 3)))
)
(cons 40 gd)
(cons 1 (strcat "Y="(rtos (car zb) 2 3)))
'(50 . 0)
)
)
)
(setvar "osmode" osm)
(princ)
) 请问ZBBZ输哪里
是命令行吗?
能运行!
我试过了。还行吧。只是还有点不到位。相信仁兄对坐标注记有新的程序了吧。为了大家交流我也搞一个程坐标的啊。呵呵
有几个问题我先说一下吧。
文字和直线的处理没有安比例。
注字的能直接放入一个图层但没有进行字体大小的指定
可以注三维的点。
大家有意见帮我改啊。再传上来分析啊!
(defun c:zz()
(setvar "osmode" 0 )
(command "layer" "m" "zbzj" "")
(setq ll1(getpoint "点一"))
(setq ll2(getpoint"点二"))
(command "line" ll1 ll2 "")
(setq long1(distance ll1 ll2))
(cond
((> (car ll1) (car ll2)) (setq ll3x (-(car ll2)(* long1 2))))
((<= (car ll1) (car ll2)) (setq ll3x (+(car ll2)(* long1 2))))
)
(setq ll3y (cadr ll2))
(setq ll3(list ll3x ll3y))
(princ ll3)
(command "line" ll2 ll3 "")
(if(> (car ll1) (car ll2))
(setq ll2 ll3)
)
(command "text" ll2 2.5 0 (rtos(cadr ll1)))
(command "text" (list (car ll2) (+ 2.5 (cadr ll2)) ) 2.5 0 (rtos(car ll1)))
(command "text" (list (car ll2) (+ -2.6 (cadr ll2)) ) 2.5 0 (rtos(caddr ll1)))
(princ)
) 程序更新了! 版主,这个程序能不能改成随坐标原点变动而变动,我赏试了很多次都不成功,望你能指点,谢谢! 版主,这个程序标注坐标不能随坐标原点变动而变动(原点变了,标注的坐标会与标注对象分开),要如何改代码,请指点。 好啊啊啊啊啊啊啊啊啊啊啊啊啊啊 。。。。。。。。。。 什么东西 下来看看 3楼的也是好东西 不过不能直接复制粘贴呢~~ 版主,这个程序能不能改成标注坐标可以随坐标原点变化而变化? 怎么没人能抽空帮一下我?
页:
[1]