autocad的lsp程序修改,可以同时批量输出点的坐标和颜色

作者&投稿:望仪 (若有异议请与网页底部的电邮联系)
怎样批量修改多个CAD图中的点样式LSP源代码?怎样批量修改多个CAD图指定层(如JZD层)的文字颜色为白色?~

1. 创建CHSCR命令文件
CH.SCR文件的内容是由AutoCAD的命令和响应序列所组成的ASCⅡ文件,是可在AotuCAD编辑状态下执行的文本文件。
CH.SCR包含了可在指定图形中自动重复执行命令序列。
例:把图形文件C800-01~ C800-98中的图纸编号2066DD3改变2087DD2。高层代号C13改为D24,设备型号DZ20改为C45AD。
在DOS状态下用文本编辑软件建立CH.SCR文件:
CHTEXT_all _ _2066DD3
2087DD2
CHTEXT_all _ _C13
D24〈Enter〉
CHTEXT _all _ _DZ20
C45AD〈Enter〉
PLOT〈Enter〉
〈Enter〉
〈Enter〉
其中:
_代表一个空格
〈Enter〉代表回车
CHTEXT修改图中文字的LISP程序
•AotoCAD中文字修改功能较弱,AutoCADR12.0中曾加了DDEDIT修改文字命令,但只能用鼠标器手工修改,且一次只能改一个字符串不适用程序化操作。
因此,在编写SCR命令文件时我们采用了修改图中文字的LISP程序CHTEXT.LSP(其清单附后)。将其装入ACAD.LSP后,只要键入CHTEXT,就可按汉字提示使用,它一次可以修改多个字符串。
•当编写命令文件时,必须考虑每条AutoCAD命令中的所有响应和提示。命令文件中的每个空格都是有意义的,因为AotuCAD将它看作回车,所以不能随意增减。
•如果不需要输出PLT绘图文件,PLOT后面四行可以不要。
•CHSCR有两个作用:
①如果需要修改的图形文件较少,可以在ACAD中通过SCRLPT命令直接调用CH.SCR。
②可以在ACAD中通过SCRIPT命令试运行一次,看是否有错。
在ACAD命令状态下,键入以下命令即可按CH.SCR文件要求,对当前图形完成所需的修改。
Command:script
Script file:ch
当所涉及的图形文件较多时(十几个以上),采用手动操作,将每一图形文件调出来,逐一修改,效率太低。因此建议采用以下步骤,使计算机按命令自动批量修改图形文件。
2. 建立图形文件表FILE.TAB
创建完CH.SCR后,下一步应把需要修改图形文件名(.DWG)存入FILE.TAB中:
例如:
C800-01
C800-02
C800-03
C800-98
3. 编译生成CHGE.SCR文件
当具备CH.SCR(试运行正常后)和FILE.TAB文件后,就可以进行编译工作,在DOS状态下键入CHSCR〈Enter〉即开始编译,若编译出现问题,系统会给出相应的提示,编译完成后,你会发现目录中多了一个CHGE.SCR文件(自动修改图形的文本文件)。
•CHSCR.EXE:其功能是配制SCR文件格式的命令字符串并调入相关的绘图参数(源程序用C语言编写,清单附后)。
•当ACAD输出PLT文件时,如果发现有对应图形的PLT文件,将提示出是否覆盖掉它,这将引起SCRIPT命令中断运行。为此在CHSCR.EXE中,我们是这么处理的:当程序发现有相应图形的PLT文件,将自动把它删除掉,并在屏幕上显示出对应的信息。
经CHSCR.EXE所生成的CHGE.SCR文件:
open y C800-01
CHTEXT all 2066DD3
2087DD2
CHTEXT all C13
D24
CHTEXT all DZ20
C45AD
PLOT



save
open y C900-98
CHTEXT all 2066DD3
2087DD2
CHTEXT all C13
D24
CHTEXT all DZ20
C45AD
PLOT



save
quit y
4. 执行SCRIPT命令
①在ACAD中通过SCRIPT命令直接调用CHGE.SCR:
Command:script chge
②启动AutoCAD时从操作系统提示符处输入以下正文:
C:acad script chge
三、程序的安装
1. 将CHTEXT.LSP装入ACAD.LSP中。
2. 用通用C++编译器将CHSCR.C编译成可执行程序CHSCR.EXE,将其拷贝到CAD可找到的目录下。
程序CHSCR.EXE适用于AutoCAD R11.0、R12.0。

这个序号是实体进入选择集的先后决定的,就是说图1中的顺序也是在原图做成的时候展点的顺序,如果展点时顺序改变,这里输出的时候也会变的,并不是CAD图形位置决定的。
你想要根据位置控制其先后,你可以通过每个点的坐标,来排序,然后再输出,不过,那样的话LSP就有点吃力了,也许用别的编程语言更方便些

(defun c:zhuan ( / &col ept ff i lxyz ob1 spt ss sx sxyz sy sz1)
 (vl-load-com)
 (princ "
框选所需输出的点:")
 (if (and (setq ss (ssget '((0 . "POINT"))));选择的对象是点
     (setq ff (open (getfiled "文件保存为" "c:" "txt" 1) "w"));确认建立了文本
    )
  (progn
   (setq i 0)
   (while (setq spt (ssname ss i))
    (setq ept (entget spt))
    (setq ob1 (vlax-ename->vla-object spt))
    (setq &col (vla-get-color ob1));取得颜色
    (setq &col (rtos &col 2 0));颜色值为0~256
    (setq lxyz (cdr (assoc 10 ept)))
    (setq sy (rtos (nth 0 lxyz)))
    (setq sx (rtos (nth 1 lxyz)))
    (setq sz1 (rtos (nth 2 lxyz)))
    (setq sxyz (strcat sx " " sy " " sz1 " " &col));最后一个是颜色值
    (write-line sxyz ff)
    (setq i (+ i 1))
   )
   (close ff);输入结束要关闭文本
  )
 )
 (princ "
转换完毕")
 (princ);程序沉默结束
);程序不完善的地方稍微修改了一下。





画CAD快捷键如何操作?
utocad2014快捷键命令大全:CTRL+A 编组 CTRL+B 捕捉 CTRL+C 复制 CTRL+D 坐标 CTRL+E 等轴测平面 CTRL+F 对象捕捉 CTRL+G 删格 CTRL+J CTRL+SHIFT+S 图形另存为 CTRL+K 超级链接 LCTRL+L 正交 CTRL+M 帮助 CTRL+N 新建 CTRL+O 打开 CTRL+P 打印 CTRL+Q 退出 CTRL+S 保存 CTRL+T ...

cad快捷键有哪些,请各位大虾指教
IMAGECLIP:为图像对象创建新剪裁边界 ICL IMPORT:向 AutoCAD 输入文件 IMP INSERT:将命名块或图形插入到当前图形中 I INTERFERE:用两个或多个三维实体的公用部分创建三维复合实体 INF INTERSECT:用两个或多个实体或面域的交集创建复合实体或面域并删除交集以外的部分 IN INSERTOBJ:插入链接或嵌入对象 IO LAYER:管理图...

求CAD操作的快捷键资料!
utoCAD常用命令缩写AA, *AREA 计算面积AR, *ARRAY 阵列B, *BLOCK 制作块H, *BHATCH 填充BO, *BOUNDARY 边界创建BR, *BREAK 打断C, *CIRCLE 圆CHA, *CHAMFER 倒直角CO, *COPY 复制D, *DIMSTYLE 标注样式DI, *DIST 测量距离DIV, *DIVIDE 定数等分DO, *DONUT 圆环E, *ERASE 删除物体 EX, *EXTEND 延伸...

图层里设置的线宽不一样,为什么在模型里画的图却看不出来呢,只有比0.3...
OFFSET:创建同心圆、平行线和平行曲线 O OPTIONS:自定义 AutoCAD 设置 GR、OP、PR OSNAP:设置对象捕捉模式 OS PAN:移动当前视口中显示的图形 P PASTESPEC:插入剪贴板数据并控制数据格式 PA PEDIT:编辑多段线和三维多边形网格 PE PLINE:创建二维多段线 PL PRINT :将图形打印到打印设备或文件 PLOT POINT:创建点对...

谁有关于建筑类的符号 全
utoCAD 2000快捷命令的使用 AutoCAD 是目前世界各国工程设计人员的首选设计软件,简便易学、精确无误是AutoCAD成功的两个重要原因。AutoCAD提供的命令有很多,绘图时最常用的命令只有其中的百分之二十。采用键盘输入命令时由于有些常用命令较长,如 BHATCH(填充)、EXPLODE(分解),在输入时击键次数多,影响了绘图速度。虽然...

君山区17894617744: CAD LSP 文件修改 -
范顺葡萄: 点两下: (setq o (getpoint "\n 输入坐标系原点o: "))(setq x (getpoint "\n 输入坐标系X正方向x: "))(command "ucs" "3p" o x "")(setvar "Osmode" 5)(setq d1 o)(setq d2 x)

君山区17894617744: 修改CAD测量面积、长度的LSP代码
范顺葡萄: ;单独做一个程序amset设置字高,再把单位改一下就行了 (defun C:amset() (setq height (getdist "\n请输入文字高度:")) (PRINC)) (defun C:am (/ ss l i totalarea ename obj entarea) (if (setq ss (ssget)) (progn (vl-load-com) (setq modelspace ...

君山区17894617744: 求助,CAD代码插件LSP修改 -
范顺葡萄: (defun c:tt (/ EF EN ET GET MA SEL) (princ "\n功能 [删除距形内边对象]") (if (and (setq sel (entsel "\n选择一个封闭的多段线:")) (setq en (entget (car sel))) (setq et (cdr (assoc 0 en))) (setq ef (cdr (assoc 70 en))) (= et "...

君山区17894617744: 再查一下AutoCAD通过修改注册表,增加菜单项和启动项(lsp文件)的方法. -
范顺葡萄: 早上给你解决过,但不知道为啥问题失效了.给你个看看例子 在acad.lsp里加载自己的菜单 (if (not (menugroup "我的菜单组")) (progn ; 加载菜单 (command "menuload" (strcat path "菜单路径/我的菜单.mnu")) ; 显示菜单 (...

君山区17894617744: CAD面积求算lsp插件怎么修改小数位数 -
范顺葡萄: “修改小数位数”,一般在当前的格式,图形单位中修改精度.

君山区17894617744: 如何用LISP程序修改CAD快捷键? -
范顺葡萄: 1. 首先,这个快捷键不得与其它CAD快捷键有重复. 2. 快捷键的格式如下:(defun c:qx () (command "layon") (prin1) ) ;;打开所有图层 (defun c:ff () (command "layoff") (prin1) ) ;;选择需要关闭的图层 (defun c:qw () (command "layiso") (prin1) ) ;;选择需要隔离的图层 (defun c:tc () (command "laymcur") (prin1) ) ;;选择对象为当前图层3. 复制到记事本,以【.lsp】为后缀命名,autolisp加载后,就可以使用快捷键【QX】等等了.

君山区17894617744: CAD求编辑文字替换的LSP -
范顺葡萄: 1、如果直接通过style修改字体定义,可以在修改后输入命令RE刷新显示即可更新已存在的文字; 2、若通过LSP代码修改,可以采用entmod函数,样例代码如下(此代码为选中某个单行文字进行更改): (setq a (entget (car entsel)));选中某个单行文字并获取其组码列表 (entmod (subst '(7 . "hztxt") (assoc 7 a) a));更改字体名称为“hztxt”,并更新显示该文字 若需一次更改多个文字对象,可以采用循环的方式进行处理

君山区17894617744: 如何用LISP程序修改CAD快捷键?
范顺葡萄: 打开AutoCAD,工具(T)-->自定义(C)--->编辑程序参数(acad.pgp) 点编辑程序参数(acad.pgp)后会弹出一个txt文档,在里面找到“Sample aliases for AutoCAD commands” 下面的许多就是AUTOCAD的命令及其快捷键了,系统不建议修改,不要理会,为了方便就放心改

君山区17894617744: CAD LINELONG.lsp文件怎么用 -
范顺葡萄: LSP是autocad的编程命令格式 LSP程序用法: 先把*.LSP程序放入Autocad支持的目录. 方法1.进入Autocad__Tools__Load Application...__File__选中目标__打开__Load即可. 方法2.进入Autocad__在Command:输入(load "lsp命令")__OK. 方法3.以上方法如退出Autocad,在进入就要重新来过,要每次自动装载,就要把你要的(load "lsp程序")写入ACAD.lsp即可.

君山区17894617744: LSP程序,是在CAD中运行的,希望帮我稍微改动一下,使输出的坐标文件可以自己选择保存在哪里. -
范顺葡萄: 增加了三行,输出的是三维坐标点了.(defun c:md() (setvar "cmdecho" 0)(COMMAND ".UNDO" "BE") (command "-units" "2" "3" "2" "3" "" "") (setq fp (open "d:/点号坐标值.xls" "a") s (getvar "cmdecho") n (getint...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网