CAD中编个程序,让所选标高加固定值。

CAD中编个程序,让所选标高加固定值。,第1张

注意你的层名是否一致

(defun to(n)

(cdr (assoc n (entget sn)))

)

(princ “\n批量改标高程序!命令名:bbg”)

(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可编程序控制器工作原理等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9386702.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存