注意你的层名是否一致
(defun to(n)
(cdr (assoc n (entget sn)))
)
(defun c:bbg( / blip e1 en n sn ss tr1 x y1)
(command “undo” “g”)
(setq blip (getvar “blipmode”))
(setvar “blipmode” 0)
(setq n 0 bgaoy0 (if bgaoy0 bgaoy0 -005)
ss (ssget ‘((-4 “<OR”)(-4 “<AND”)(0 “TEXT”)(8 “PUB_DIM”)(-4 “AND>”)
(-4 “<AND”)
(0 “INSERT”)
(-4 “<OR”)(2 “$BG-R”)(2 “BG”)(2 “BGZ”)(-4 “OR>”)
(-4 “AND>”)(-4 “OR>”))
)
)
(princ “\n新旧标高差<”)(princ bgaoy0)
(setq x (getreal “>:”)
y (if x x bgaoy0) bgaoy0 y
)
(if ss
(progn
(princ “\n旧,新标高分别为:”)
(repeat (sslength ss)
(setq sn (ssname ss n) en (entget sn) n (1+ n)
)
(if (= (to 0) “TEXT”)
(progn
(setq y0 (to 1) y1 y0)
(if (eq (substr y1 1 1) “(“)
(setq y1 (substr y1 2) tr1 “(” )
(setq tr1 nil)
);处理带括号的标高
(setq y (if (or (eq y1 “%%P0000″)(eq y1 “%%p0000″)(eq y1 “±0000″)) 00 (atof y1))
y (+ y bgaoy0) y (if (= y 00) “%%p0000″ (rtos y 2 3))
y (if tr1 (strcat tr1 y “)”) y)
)
(setq e1 (subst (cons 1 y) (assoc 1 en) en))
(entmod e1)
)
(progn;处理属性块中的标高
(setq e1 (entget (entnext (cdr (car en))))
y1 (assoc 1 e1) y3 y1 y1 (cdr y1)
y (if (or (eq y1 “%%P0000″)(eq y1 “%%p0000″)(eq y1 “±0000″)) 00 (distof y1))
y (+ y bgaoy0) y (if (= y 00) “%%p0000″ (rtos y 2 3))
e1 (subst (cons 1 y)(assoc 1 e1) e1)
)
(entmod e1);;修改属性;
(entmod en);;修改实体
)
);(if (= (to 0) “TEXT”)
(princ (strcat y1 ” ” y “, “))
);repeat
)
)
(setvar “blipmode” blip)
(command “undo” “e”)
(princ)
)
visual lisp是专门用于AUTO CAD 二次开发的语言。代码简单,编写容易。但只能在AUOT CAD 环境下运行。你可用它编写一些自动化绘图程序。如你可编写一个自动绘制你自己设计的标题栏,齿轮轴等。用visual lisp还可编写对话框,而和用户交互。既然你会VB,学起visual lisp应该是很容易的。
其实没有你说的CAD可编程序控制器,CAD是计算机辅助设计和计算机辅助绘图的意思,也指一种绘图软件。
而可编程序控制器(Programmable Controller )原本应简称PC,为了与个人计算机专称PC相区别,所以可编程序控制器简称定为PLC(Programmable Logic Controller),但并非说PLC只能控制逻辑信号。
PLC是专门针对工业环境应用设计的,自带直观、简单并易于掌握编程语言环境的工业现场控制装置。它采用可以编制程序的存储器,用来在其内部存储执行逻辑运算、顺序运算、计时、计数和算术运算等 *** 作的指令,并能通过数字式或模拟式的输入和输出,控制各种类型的机械或生产过程。PLC及其有关的外围设备都应该按易于与工业控制系统形成一个整体,易于扩展其功能的原则而设计。
PLC就是按照一定的(编辑好的)逻辑进行若干个开关的开闭控制。
CAD不是编程软件,是计算机辅助设计(Computer Aide Design)是做设计绘图用的(机械模具建筑装修)等。编程软件可用MASTERCAM,UG等。
例如:atocad能够使通过LISO编写各种定制度绘图命令,从而达到控制绘图的效果。LISP语言(全名LISt Processor,即表处理语言),由约翰·麦卡锡在1960年左右创造的一种基于λ演算的函数式编程语言。就此编写了一个简单的程序,以期对用户起到抛砖引玉的作用。
方法/步骤
创建一个cad,新建一个工程,
在lisp编辑器中编写一下程序,程序的作用为计算线段总长度,并选择另存为位置,保存文件lsp文件。
使用cad加载lsp文件,选择lsp文件位置。
在命令栏点击l,用cad绘制几条线段。
在命令栏输入ll,选择所有线段,则在图下计算并显示出了所有线段的总长度。
用lisp的代码为(defun c:LL ()
(setvar "cmdecho" 1)
(setq en (ssget (list '(0 "spline,arc,line,ellipse,LWPOLYLINE"))))
(setq i 0)
(setq ll 0)
(repeat (sslength en)
(setq ss (ssname en i))
(setq endata (entget ss))
(command "lengthen" ss "")
(setq dd (getvar "perimeter"))
(setq ll (+ dd ll))
(setq i (1+ i))
)
(princ "所选线条总长为:")(princ ll)(princ)
)
做了隐藏和显示两个命令
我编写的简单,功能不太全你看着用吧
复制下列代码,创建acadlsp放在在CAD安装目录第一层文件夹下,可自动加载啊:
;在命令行输入该命令hidsel,然后选择图元,结果没选的被改到隐藏层
(defun C:hidsel(/ all;所有图元
xs;非隐藏图元
yc;隐藏图元
n nam dat)
(setvar "CMDECHO" 0);关闭命令回显
(command "_layer" "n" "临时隐藏图层" "")(command "_layer" "off" "临时隐藏图层" "")
(setvar "CMDECHO" 1)
(setq all (ssget "x"));选择所有
(setq xs (ssget));选择非隐藏图元
(setq n -1 yc all);运算隐藏图元
(repeat (sslength xs)
(setq n (+ n 1))
(setq nam (ssname xs n));返回第N个图元的名称
(setq yc (ssdel nam yc))
)
(setq N -1);隐藏
(repeat (sslength yc)
(setq N (+ n 1))
(setq nam (ssname yc n));返回第N个图元的名称
(setq dat (entget nam));DAT储存第N个图元数据
(entmod (subst (cons 8 "临时隐藏图层") (Assoc 8 dat) dat));将yc集合隐藏
)
(setq all nil xs nil yc nil n nil nam nil dat nil);清除数据占用内存
(princ)
)
;显示所有图元
(defun c:shoal(/ all n nam dat)
(setq all (ssget "x"));选择所有
(setq N -1);隐藏
(repeat (sslength all)
(setq N (+ n 1))
(setq nam (ssname all n));返回第N个图元的名称
(setq dat (entget nam));DAT储存第N个图元数据
(entmod (subst (cons 8 "0") (Assoc 8 dat) dat));将yc集合隐藏
)
(setvar "CMDECHO" 0)
(COMMAND "PURGE" "LA" "临时隐藏图层" "Y" "Y" "")
(setvar "CMDECHO" 1)
(setq all nil n nil nam nil dat nil);清除数据占用内存
(princ)
)
以上就是关于CAD中编个程序,让所选标高加固定值。全部的内容,包括:CAD中编个程序,让所选标高加固定值。、什么语言比较适合编写CAD程序、CAD可编程序控制器工作原理等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)