;用autocad2006,以前版本的右键锁定视口菜单没了,搞了一个,可以批量锁定/解锁,大家批批。;加载后命令:vl(defun c:vl() (if (setq ents (ssget ’((0 . "VIEWPORT")))) (progn (setq orstring (getstring "\n解锁/<锁定>:")) (cond ((= orstring "u") (command "mview" "l" "off" ents ""))
;用autocad2006,以前版本的右键锁定视口菜单没了,搞了一个,可以批量锁定/解锁,大家批批。
;加载后命令:vl
(defun c:vl()
(if (setq ents (ssget ’((0 . "VIEWPORT"))))
(progn
(setq orstring (getstring "\n解锁
/<锁定>:"))
(cond
((= orstring "u") (command "mview" "l" "off" ents ""))
((= orstring "") (command "mview" "l" "on" ents ""))
)
)
)
(princ)
)
2楼
希望大家以后多多发一下关于CAD编程的,我会好好奖励大家的.
回复
3楼
;谢谢斑竹!再贴个高程转换的程序,也请大家批批,好完善。
;请将高程点数据放在gcd图层,有时间再对等高线也处理(简单的move一下就行了)。
(defun c:gczh ()
(setq ent_s (ssget "x" (list (cons 0 "TEXT") (cons 8 "gcd"))))
(setq odim (getvar "dimzin"))
(setvar "dimzin" 1)
(if ent_s
(progn
(setq ent_n (sslength ent_s))
(setq ent_j (getreal "\n输入数值[+/-]:"))
(if (null (setq ent_f (getreal "\n输入小数点位数[3]:")))
(setq ent_f 3)
)
(if (null ent_j) (setq ent_j 0))
(setq i 0)
(repeat ent_n
(setq ent_m (ssname ent_s i))
(setq ent_i (entget ent_m))
(setq ent_x (atof (cdr (assoc 1 ent_i))))
(setq ent_xx (+ ent_x ent_j))
(setq ent_i (subst (cons 1 (rtos ent_xx 2 (fix ent_f))) (assoc 1 ent_i) ent_i))
(entmod ent_i)
(setq i (1+ i))
)
)
(prin1 "\n请先将高程数据放到gcd图层上!")
)
(setvar "dimzin" odim)
(princ)
)
回复
4楼
楼主是强人~
回复
5楼
英雄所见略同
回复
6楼
两位过奖了,lisp我也刚入门。
有时间我会常来,希望能和大家交流交流,共同进步。
回复
7楼
谢谢
回复
8楼
eobser
有空到暖通的CAD板块指导工作啊~~
呵呵
回复
9楼
我在学EXCEL的VBA编程,不知道CAD的是不是难学呀?我还没涉及过呢?
回复
10楼
语法都差不多吧,只是处理对象可能不同.希望大家学懂了,告诉我们一下!
回复
11楼
以前也学过excel的vba入门,现在也忘光了,因为少用。
现在入门lisp,用<vlisp函数说明>及<autolisp&dcl>,感觉不会很难,精就困难了,需要时间+兴趣+交流。
也可以学学vba啊。
回复