CAD二次开发指令全集
AutoCAD官方二次开发教程

第 1章 Hello World: 工程的创建在这一章中,我们将不使用ObjectARX向导来创建一个新的工程。
我们将使用Visual Studio .NET来创建一个新的类库工程。
通过这个工程,你可以创建一个能被AutoCAD装载的.NET dll文件。
这个dll文件会向AutoCAD加入一个名为“HelloWorld”的新命令。
当用户运行这个命令后,在AutoCAD 命令行上将显示“Hello World”文本。
1) 启动Visual ,选择”文件>新建>工程”(File> New> Project)。
在新建工程对话框中选择工程类型为”Visual Basic 工程”,然后选择”类库”模板,在工程名字框中输入”Lab1”,然后选择工程存放的位置。
点击确定按钮来创建工程。
2) 在工程的Class1.vb文件中,一个公有类“Class1”已经被系统自动创建了。
接下来向这个类加入命令。
要加入命令,你必须使用AutoCAD .NET托管封装类。
这些托管封装类包含在两个托管模块中。
要加入对这两个托管模块的引用,请用鼠标右键单击”引用”然后选择”添加引用”。
在弹出的”添加引用”对话框中选择”浏览”。
在”选择组件”对话框中,选择AutoCAD 2006的安装目录(这里假定为C:\Program Files\AutoCAD 2006\),在这个目录下找到“acdbmgd.dll”然后选择并打开它。
再一次选择”浏览”,在AutoCAD 2006的安装目录下找到“acmgd.dll”并打开它。
当这两个组件被加入后,请单击”添加引用” 对话框中的”确定”按钮。
正如它们的名字所表示的,acdbmgd.dll包含ObjectDBX 托管类,而acmgd.dll包含AutoCAD托管类。
3) 使用对象浏览器(Visual 的”查看>其它窗口>对象浏览器”菜单项)来浏览加入的两个托管模块所提供的类。
CAD二次开发命令

箭头线
y
Y
箭头标识
FD
移动
qdim 快速标注
CF
变虚线
FR
倒R角
dimradius半径尺寸标注
dra或dr
CE
自动展开
FX
制作块属性
dimdiamet直er 径尺寸标注
ddi或dd
CR
旋转复制
DD
标注直径
圆的直径标注
qc
BT
自动标注孔位代号 DR
标注半径
properties 对象属性管理器
bb
D1
自动将标注A改为B DF
CAD常用二次开发命令
GG
镜像
AA
放大标注
layer 图层控制
la
FFR
调用图框信息
DE
放在25.4并另存
line
画直线段
l或ss
FV
锁定指定图层
DXF
自动输入DXF
ray
画射线
ra
DW
保存指定图层
BDC
刀具图
xline 画直线
xl或xx
RB
生成标准图层
CS
简单剖视画法
水平直线
xs
ER
调用图框
CB
复制成块
dor
CMK
自动计算孔径
FF
连接成直角
Y方向
dy
DST
标注样式
EC
设变次快捷命令
X方向
dx
CCD
恢复对象捕捉
QC
标注多个圆的直径
双向标注
ag
DCC
取消对象捕捉
QE
查询抽牙底孔
dimangula角r 度尺寸标注
第7章AutoCAD二次开发技术

$T1=ELEMENT 调用数字化仪子菜单ELEMENT
4.菜单项的表示:
(1) [菜单项名]命令串 该方法用于屏幕菜单项或下拉菜单项的表示。 (2) [字符串] 方括号中的字符串只是作为子菜单的标题项使用。 (3) 字符串 该种表示方法是第(1)种表示方法的特例,此时,字符串既 作为菜单项名显示在屏幕上,又作为命令串出现在命令行。 (4) [->子菜单名]和[<- 菜单项名]命令串
菜单文件由多个菜单段组成,每段有一个段标题,单独占一行, 格式如下: ***<段名> 段名标识该菜单从属于何种设备。AutoCAD有如下段标号: ***MENUGROUP 菜单组名 ***BUTTONSn 按钮菜单段 ***AUXn 辅助菜单段 ***POP0 光标菜单段 ***POPn 下拉菜单段 ***IMAGE 图像块菜单段 ***SCREEN 屏幕菜单段 ***TABLETn 数字化仪菜单段 ***ACCELERATORS 快捷键段 ***HELPSTRINGS 状态栏帮助段 子菜单的起始标记为“**子菜单名”,子菜单名可由用户任意 指定,但各个子菜单名不能相同。
(2) MNC: 将MNU菜单源文件编译之后得到的菜单目标文件。
(3) MNR:菜单资源文件。 (4) MNS:AutoCAD系统所生成的菜单源文件。 (5) MNL:菜单LISP文件。 使用MENU命令可引导AutoCAD从盘文件中装载一个新菜单。
1.菜单文件的结构: 每个菜单文件由若干段组成,每段包含若干子菜单和 菜单项。AutoCAD2002标准菜单包含以下10个菜单段。 (1) 下拉菜单段:POP1~POP11 (2) 光标菜单段:POP0 (3) 定点设备按钮菜单段:BUTTONS1,BUTTON2
前者是调用下拉子菜单或光标子菜单的菜单项。后者是子菜 单的最后一个菜单项,方括号内的菜单项名将显示在屏幕上,命 令串的作用同(1)所述。 (5) [幻灯片库名(幻灯片名,文字)] 命令串 这是图像块菜单段中菜单项的完整表示形式。
CAD二次开发技术 命令符集合

;;;算术运算函数(max 20.0 30.0 0.0)(sqrt 16)(expt 3 3);;;三角函数(sin (/ pi 6));;;取整函数(fix (/ pi 2));;;赋值函数(setq aa (/ pi 2));;;quote应用(setq aa(quote (- 2 1) ))(setq aa ' (- 2 1) );;;自定义函数defun(defun dtr ()(setq a 40)(setq b 40))(defun sqrab (a b )(setq c (+ (* a a)(* b b)))(sqrt c));;;定义一个把度转换成弧度的函数(defun dtr (a)(* a (/ pi 180.0)));;;求45度的正弦值(defun qsin ()(sin (dtr 45)));;;提取点(20.0 30.0 0.0)的X、Y、Z坐标(setq aa (list 20.0 30.0 0.0))(car aa)(cdr aa)(cadr aa)(caddr aa);;;提取表中第n个元素:(setq bb '("大" "家" "好"))(nth 0 bb)(nth 1 bb)(nth 2 bb);;;用append构造表(setq aa (list 20.0 30.0 0.0))(setq bb (list aa "AA"))(setq ee (append aa bb));;;用cons构造坐标(setq aa (list 20.0 30.0 0.0))(setq bb (list 500.0 600.0 0.0))(command "line" aa bb "")(setq cc (cons 300.0 (cdr bb)))(command "line" aa cc "");;;用cons构造点对(setq aa (cons 'a "aaa"));;;reverse 应用(setq aa (list 30.0 20.0 10.0))(setq bb (REVERSE aa));;;assoc 应用(setq aa (list '(a . rest) '(pt 30.0 20.0 10.0) '("O" 90)))(setq bb (assoc "O" aa))(setq cc (assoc 'pt aa));;;subst 应用(setq aa (list '(a . rest) '(pt 30.0 20.0 10.0) '("O" 90)))(setq bb (assoc "O" aa))(setq cc (subst '(pt 80.0 60.0 40.0) '(pt 30.0 20.0 10.0) aa)) ;;;foreach应用(foreach cir '((3 2 1) (4 4.5 0.5) (7 5 2))(setq Ce (list (car cir) (cadr cir)))(setq r (caddr cir))(command "circle" Ce r));;;mapcar应用(mapcar 'abs '(-2 -4 4.5 -0.5) );最高成绩(setq xlcjb '("小李" 92 85 80 ))(setq xzcjb '("小张" 81 90 88 ))(setq xwcjb '("小王" 90 85 90 ))(setq xl (nth 0 xlcjb) xlyw (nth 0 xlcjb)xlsx (nth 0 xlcjb) xlwy (nth 0 xlcjb))(setq ywjgcj (max xlyw xzyw xwyw));语文最高成绩(setq sxjgcj (max xlsx xzsx xwsx));数学最高成绩(setq wyjgcj (max xlwy xzwy xwwy));外语最高成绩;;;eval应用(setq a 12)(setq b a)(eval b)(setq a '(abs -22))(setq b a)(eval b);;;get类函数应用(defun dcir ()(setq pc (getpoint"\n圆心位置:"))(setq r (getreal "\n圆半径:"))(command "circle" pc r))(defun xjgz ()(setq pc (getpoint"\n写字位置:"))(setq r (getstring "\n写的内容:"))(command "text" pc 30 0 r);;"开心每一天!" "技术条件";;;polar函数应用(defun hjx ();(setq pt (getpoint"\n起点位置:"))(setq l (getreal "\n矩形长:"))(setq h (getreal "\n矩形高:"))(setq pt1 (polar pt 0 l))(setq pt2 (polar pt1 (/ pi 2) h))(setq pt3 (polar pt2 pi l))(command "line" pt pt1 pt2 pt3 pt ""));;;getpoint,angle,distance,polar,command函数综合运用(defun hjx1 ()(setq pt (getpoint"\n起点位置:"))(setq ptt (getpoint"\n绘制方向:" pt))(command "line" pt ptt "")(setq jxang (angle pt ptt))(setq jxdis (distance pt ptt))(setq pt1 (polar pt (+ jxang 0) (/ jxdis 2)))(setq pt1 (polar pt1 (+ jxang (/ pi 2)) 50))(setq pt2 (polar pt1 (+ jxang (/ pi 2)) 80))(setq pt3 (polar pt1 (+ jxang (/ pi 4)) 60))(setq pt4 (polar pt1 (+ jxang (* 3(/ pi 4))) 60))(command "circle" pt1 50)(command "circle" pt2 30)(command "circle" pt3 10)(command "circle" pt4 10))(defun hjx11 ()(command "erase" "all" "")(setq pt (getpoint"\n起点位置:"))(setq ptt (getpoint"\n绘制方向:" pt))(command "line" pt ptt "")(setq ss2 (ssget "L"))(setq jxang (angle pt ptt))(setq jxdis (distance pt ptt))(setq pt11 (polar pt (+ jxang 0) (/ jxdis 2.0)))(setq pt1 (polar pt11 (+ jxang (/ pi 2.0)) 50.0))(setq pt2 (polar pt1 (+ jxang (/ pi 2.0)) 80.0))(setq pt3 (polar pt1 (+ jxang (/ pi 4.0)) 61.0))(setq pt4 (polar pt1 (+ jxang (* 3.0(/ pi 4.0))) 61.0))(command "circle" pt1 50)(setq ss1 (ssget "L"))(command "circle" pt2 30)(setq ss1(ssadd (entlast) ss1))(command "circle" pt3 10)(setq ss1(ssadd (entlast) ss1))(command "circle" pt4 10)(setq ss1(ssadd (entlast) ss1))(command "erase" ss2 "")(setq r (getreal "\n动吗?"))(setq i 0)(while (< i 9)(command "rotate" ss1 "" pt11 5)(setq j 0)(while (< j 20000) (setq j (+ j 1)))(setq i (+ i 1)))(setq i 0)(while (< i 18)(command "rotate" ss1 "" pt11 -5)(setq j 0)(while (< j 20000) (setq j (+ j 1)))(setq i (+ i 1)))(setq i 0)(while (< i 18)(command "rotate" ss1 "" pt11 5)(setq j 0)(while (< j 20000) (setq j (+ j 1)))(setq i (+ i 1)))(setq i 0)(while (< i 9)(command "rotate" ss1 "" pt11 -5)(setq j 0)(while (< j 20000) (setq j (+ j 1)))(setq i (+ i 1)))(setq r (getreal "\n")));;;command函数应用(defun dcir ()(command "circle")(setq pc (getpoint"\n圆心位置:"))(command pc)(setq r (getdist "\n圆半径:" pc))(command r));;;itoa、atoi、atof函数应用(setq aa (itoa 12))(setq aa (atoi "12.3"))(setq aa (atof "12.3"));;;rtos 函数应用(setq aa (rtos 3456.7890 2 4))(setq aa (atoi "12.3"))(setq aa (atof "12.3"));;;strcat 函数应用(setq aa (sin (* 30 (/ pi 180))))(setq bb (rtos aa 2 3))(setq cc (strcat "sin30°= " bb))(setq pc (getpoint"\n写字位置:"))(setq dd (command "text" pc 10 0 cc))(setq zz (substr cc 4 4));;;if 函数应用(if (= 3 1) "正确" "错误")(setq pt (getpoint"\n算式书写位置:"))(command "text" pt 10 0 "计算:20 X 20 =")(setq aa (getreal "\n请输入计算结果:") )(setq bb (rtos aa 2 1))(if (= aa 400)(progn(setq pt1 (polar pt 0 120 ))(command "text" pt1 10 0 bb)(setq pt1 (polar pt (/ pi -2) 40 ))(command "text" pt1 10 0 " 计算正确") )(progn(setq pt1 (polar pt 0 120 ))(command "text" pt1 10 0 bb)(setq pt1 (polar pt (/ pi -2) 40 ))(command "text" pt1 10 0 " 计算错误") ))(setq r (getreal "\n"));;;cond 函数应用(setq a 4)(cond ((= a 1)(princ "A=1"))((= a 2)(princ "A=2"))((= a 3)(princ "A=3"))((= a 4)(princ "A=4"))((= a 5)(princ "A=5")))(print);;;while 函数应用(setq n 1)(while (< n 11)(princ (* n n))(princ " ")(setq n (1+ n)))(print)(setq pt '(200 150))(setq n 1)(while (< n 5)(command "circle" pt "50")(setq pt (subst (+ (car pt) 120) (car pt) pt))(setq n (1+ n)))(setq pt '(200 150))(setq n 1)(repeat 6(command "circle" pt "50")(setq pt (subst (+ (car pt) 120) (car pt) pt)));;;搜索<文件>的路径函数(findfile "mylx.lsp")(setq aa (sin (* 30 (/ pi 180))))(setq bb (rtos aa 2 3))(setq cc (strcat "sin30°= " bb))(setq pc (getpoint"\n写字位置:"))(setq dd (command "text" pc 10 0 cc))(setq ffm (open "D:/韩文挡/AutoLISP程序设计/mydata.dat" "w")) (write-line cc ffm)(close ffm);;;选择集操作数(setq pt '(10.0 10.0))(while (/= pt nil)(setq pt (getpoint "\n起点:"))(setq pt1 (polar pt (/ pi 2) 100))(setq pt2 (polar pt1 (* 5 (/ pi 3)) 65))(setq pt3 (polar pt1 (* 4 (/ pi 3)) 65))(command "pline" pt pt1 pt3 pt1 pt2 "")(setq ss (ssget "L"))(command "array" ss "" "p" pt 5 "" "")(command "copy" ss "" pt '(200 200)))(setq r (getreal "\n"))(setq pt (getpoint "\n起点:"))(setq pt1 (polar pt (* 5 (/ pi 4)) 50))(setq pt2 (polar pt (/ pi 4) 50))(command "CIRCLE" pt 15)(setq ss2 (ssget "L"))(command "rectang" pt1 pt2)(ssadd (entlast) ss2 )(setq pt3 (polar pt (/ pi 4) 200))(setq pt4 (polar pt3 pi 300))(command "line" pt3 pt4 "")(command "mirror" ss2 "" pt3 pt4 "")(setq ss1 (ssget "x" '((0 . "CIRCLE"))))(setq pt1 (getpoint "\n移动起点:"))(setq pt2 (getpoint "\n移动终点:" pt1))(command "move" ss1 "" pt1 pt2)(setq ss1 (ssget "w" ))(setq pt1 (getpoint "\n移动起点:"))(setq pt2 (getpoint "\n移动终点:" pt1))(command "move" ss1 "" pt1 pt2)(command "copy" ss1 "" pt2 pt1);;;生成新体体(entmake (list (cons 0 "line")(10 100.0 100.0 0.0)(11 100.0 200.0 0.0))) ;;;综合举例;;;1.求两二阶矩阵的乘积;;;;;; _ _ _ _;;; | 1.0 2.0 | | 4.0 3.0 |;;; | | X | |=;;; |_3.0 4.0_| |_2.0 1.0_|;;;(defun qjzj ()(setq ah1 '(1.0 2.0))(setq ah2 '(3.0 4.0))(setq bl1 '(4.0 2.0))(setq bl2 '(3.0 1.0))(setq c11 (+ (* (nth 0 ah1)(nth 0 bl1))(* (nth 1 ah1)(nth 1 bl1))))(setq c12 (+ (* (nth 0 ah1)(nth 0 bl2))(* (nth 1 ah1)(nth 1 bl2))))(setq c21 (+ (* (nth 0 ah2)(nth 0 bl1))(* (nth 1 ah2)(nth 1 bl1))))(setq c22 (+ (* (nth 0 ah2)(nth 0 bl2))(* (nth 1 ah2)(nth 1 bl2))))(princ "\n 所求计算结果为:")(princ "\n _ _") (princ " _ _")(princ " _ _")(princ "\n | 1 2 |")(princ " | 1 2 |")(princ " | ")(princ c11)(princ " ")(princ c12 )(princ " |")(princ "\n | |")(princ " X | |")(princ " = | |")(princ "\n |_3 4_|")(princ " |_3 4_|")(princ " |_")(princ c21)(princ " ")(princ c22 )(princ "_|")(print)(print));;;1.绘制一起点在(100 100)点、边长为5的正方形;;;(defun hzfx ()(setq pt1 '(100.0 100.0))(setq pt2 (list (+ 5.0 (car pt1)) (cadr pt1)))(setq pt3 (list (car pt1) (+ 5.0(cadr pt1))))(setq pt4 (list (+ 5.0 (car pt1)) (+ 5.0(cadr pt1))))(command "line" pt1 pt2 pt4 pt3 pt1 ""))(defun drawjc1 ()(setq pt1 (getpoint "\n孔中心点"))(setq kd (getreal "\n孔径"))(setq jb (getreal "\n键槽宽"))(setq jt (getreal "\n键槽深"))(command "layer" "m" "1" "c" "red" "" "l" "center" "" "")(setq pt2 (polar pt1 0 (+ (* kd 0.5) 5)))(setq pt3 (polar pt1 pi (+ (* kd 0.5) 5)))(setq pt4 (polar pt1 (/ pi 2) (+ (- jt (* kd 0.5)) 5)))(setq pt5 (polar pt1 (/ pi -2) (+ (* kd 0.5) 5)))(setq x (sqrt(- (* (/ kd 2) (/ kd 2))(* (/ jb 2)(/ jb 2)))))(setq pt6 (polar pt1 (/ pi 2) x))(setq pt7 (polar pt6 0 (/ jb 2)))(setq pt8 (polar pt6 pi (/ jb 2)))(setq pt9 (polar pt1 (/ pi 2) (- jt (/ kd 2))))(setq pt10 (polar pt9 0 (/ jb 2)))(setq pt11 (polar pt9 pi (/ jb 2)))(command "layer" "s" "1" """line" pt2 pt3 """line" pt4 pt5 """layer" "s" "0" """line" pt7 pt10 pt11 pt8 """arc" pt8 "C" pt1 pt7))(defun drawjc2 ()(setq kd nil jb nil jt nil liuliang 1);;设置图层(command "layer" "m" "draw" "c" "white" "" "")(command "layer" "m" "center" "c" "red" "" "l" "center" "" "");;打开对话框(setq index_value (load_dialog "D:/韩文挡/AutoLISP程序设计/drawjc.dcl"))(if (not (new_dialog "drawjc" index_value))(exit))(fy "image_jsk" "D:/韩文挡/AutoLISP程序设计/ls.sld" )(set_tile "edit_kd" "100")(set_tile "edit_jb" "28")(set_tile "edit_jt" "110")(action_tile "edit_kd" "(setq kd (atof $value))")(action_tile "edit_jb" "(setq jb (atof $value))")(action_tile "edit_jt" "(setq jt (atof $value))")(action_tile"cancel""(setq liuliang nil) (done_dialog 0)")(start_dialog)(unload_dialog index_value );;图形绘制(if (= liuliang nil) (exit))(setq pt1 (getpoint "\n孔中心位置:"))(setq pt2 (polar pt1 0 (+ (* kd 0.5) 5)))(setq pt3 (polar pt1 pi (+ (* kd 0.5) 5)))(setq pt4 (polar pt1 (/ pi 2) (+ (- jt (* kd 0.5)) 5)))(setq pt5 (polar pt1 (/ pi -2) (+ (* kd 0.5) 5)))(setq x (sqrt(- (* (/ kd 2) (/ kd 2))(* (/ jb 2)(/ jb 2)))))(setq pt6 (polar pt1 (/ pi 2) x))(setq pt7 (polar pt6 0 (/ jb 2)))(setq pt8 (polar pt6 pi (/ jb 2)))(setq pt9 (polar pt1 (/ pi 2) (- jt (/ kd 2))))(setq pt10 (polar pt9 0 (/ jb 2)))(setq pt11 (polar pt9 pi (/ jb 2)))(command "layer" "s" "center" """line" pt2 pt3 """line" pt4 pt5 """layer" "s" "draw" """line" pt7 pt10 pt11 pt8 """arc" pt8 "C" pt1 pt7));;在图象控件内显示幻灯片的自定义函数(defun fy (fhmode fhsld)(setq x (dimx_tile fhmode)y (dimy_tile fhmode))(start_image fhmode)(fill_image 4 4 (- x 8) (- y 8) 0)(slide_image 16 0 (- x 8) (- y 8) fhsld)(end_image));;;应用外部数据文件(defun drawjc3 ()(setq ffm (open "D:/韩文挡/AutoLISP程序设计/geardata.dat" "r")) (setq kd (atof (read-line ffm)))(setq jb (atof (read-line ffm)))(setq jt (atof (read-line ffm)))(close ffm)(command "layer" "m" "1" "c" "red" "" "l" "center" "" "")(setq pt1 (list 1.0 1.0))(while (/= pt1 nil)(setq pt1 (getpoint "\n孔中心位置:"))(setq pt2 (polar pt1 0 (+ (* kd 0.5) 5)))(setq pt3 (polar pt1 pi (+ (* kd 0.5) 5)))(setq pt4 (polar pt1 (/ pi 2) (+ (- jt (* kd 0.5)) 5)))(setq pt5 (polar pt1 (/ pi -2) (+ (* kd 0.5) 5)))(setq x (sqrt(- (* (/ kd 2) (/ kd 2))(* (/ jb 2)(/ jb 2)))))(setq pt6 (polar pt1 (/ pi 2) x))(setq pt7 (polar pt6 0 (/ jb 2)))(setq pt8 (polar pt6 pi (/ jb 2)))(setq pt9 (polar pt1 (/ pi 2) (- jt (/ kd 2))))(setq pt10 (polar pt9 0 (/ jb 2)))(setq pt11 (polar pt9 pi (/ jb 2)))(command "layer" "s" "1" """line" pt2 pt3 """line" pt4 pt5 """layer" "s" "0" """line" pt7 pt10 pt11 pt8 """arc" pt8 "C" pt1 pt7)));;;绘制法兰盘(defun flp ()(command "layer" "m" "1" "c" "red" "" "l" "center" "" "")(command "layer" "m" "2" "c" "yellow" "" "")(command "erase" "all" "")(setq pce (getpoint "\n圆心:" ))(setq aa "y")(while (= aa "y")(setq r (getreal "\n半径:" ))(command "layer" "s" "0" """circle" pce r)(setq aa (getstring "\n画同心圆吗?(y/n)" )))(setq ccent (entsel "\n给同心圆加中心线,请点选同心圆中半径最大的圆")) (setq ccentm (car ccent))(setq cm (entget ccentm))(setq ccr (cdr (assoc 40 cm)))(setq pt1 (polar pce 0 (+ 5 ccr)))(setq pt2 (polar pce pi (+ 5 ccr)))(setq pt3 (polar pce 1.5708 (+ 5 ccr)))(setq pt4 (polar pce -1.5708 (+ 5 ccr)))(command "layer" "s" "1" """line" pt1 pt2 """line" pt3 pt4 "")(setq r1 (getreal "\n螺纹孔分布半径:" ))(command "circle" pce r1)(setq plwce (getpoint "\n螺纹孔圆心:" ))(setq r2 (getreal "\n螺纹孔直径:" ))(command "layer" "s" "0" """circle" plwce r2)(setq ss (ssget "L"))(setq pt1 (polar plwce -1.5708 (* r2 1.2)))(setq pt2 (polar plwce pi (* r2 1.2)))(command "layer" "s" "2" """arc" "ce" plwce pt1 pt2)(ssadd (entlast) ss )(setq rg (getint "\n螺纹孔个数:" ))(command "array" ss "" "p" pce rg "360" "n")(command "layer" "s" "0" "")(setq l (getreal "\n")));;;给圆加中心线(defun dccl (/ ccent ccentm cm ccpt ccr pt1 pt2 pt3 pt4)(command "layer" "m" "1" "c" "red" "" "l" "center" "" "")(setq ccent (entsel "\n请点选要填加中心线的圆"))(while (/= ccent nil)(setq ccentm (car ccent))(setq cm (entget ccentm))(setq ccpt (cdr (assoc 10 cm)))(setq ccr (cdr (assoc 40 cm)))(setq pt1 (polar ccpt 0 (+ ccr 5)))(setq pt2 (polar ccpt pi (+ ccr 5)))(setq pt3 (polar ccpt 1.5708 (+ ccr 5)))(setq pt4 (polar ccpt -1.5708 (+ ccr 5)))(command "layer" "s" "1" """line" pt1 pt2 """line" pt3 pt4 "")(setq ccent (entsel "请点选要填加中心线的圆")) )(command "layer" "s" "0" ""));;;图层格式刷(defun tcgss (/ ccent ccentm cm ccpt ccent1 ccentm1 cm1) (setq ccent (entsel "\n请点选格式样板:")) (setq ccentm (car ccent))(setq cm (entget ccentm))(setq ccpt (assoc 8 cm))(setq ccent1 (entsel "\n请点选格式对象:"))(while (/= ccent1 nil)(setq ccentm1 (car ccent1))(setq cm1 (entget ccentm1))(setq cm1 (subst ccpt (assoc 8 cm1) cm1))(entmod cm1)(setq ccent1 (entsel "\n请点选格式对象:"))));;;等圆格式刷(defun dygss (/ ccent ccentm cm ccpt ccent1 ccentm1 cm1) (setq ccent (entsel "\n请点选格式样板:")) (setq ccentm (car ccent))(setq cm (entget ccentm))(setq ccpt (assoc 40 cm))(setq ccent1 (entsel "\n请点选格式对象:"))(while (/= ccent1 nil)(setq ccentm1 (car ccent1))(setq cm1 (entget ccentm1))(setq cm1 (subst ccpt (assoc 40 cm1) cm1))(entmod cm1)(setq ccent1 (entsel "\n请点选格式对象:"))))。
二次开发CAD

AcDbObjectId objId; //my : AcDbObjectId是一个典型的C++类,每一个ACAD对象都会分配一个唯一的ID号,用于查询等操作,ACAD图形本质是数据库,一个ACAD对象对应一条数据库记录,ID号相当于记录的索引或主键。
ads_name ss;AcDbObjectIdArray objIds;指向成员操作符。
要求是对象是指针。
比如你有一个类,叫CClass,则:CClass *pt = new CClass;pt->func();->运算符的左边必须是一个指针,右边必须是左边的指针指向的类中的成员。
acedSSGet()函数用法详解大多数O bjec tARX函数在处理选择集和实体时,都用名字来识别选择集或实体,该名字用一个长整型对来表示的,并对A utoCAD来维护。
在O bjec tARX中,该名字的类型为ads_name。
在对选择集或实体进行操作之前,O bjec tARX应用程序必须通过调用一个返回其名字的库函数来得到选择集或实体名字。
注意:选择集和实体的名字是不稳定的,它们仅仅在AutoCAD当前图形工作时有效。
如果从AutoCAD退出或切换到另一个图形时其值就会丢失。
对于选择集来说,它也是与当前图有关联的,所以其名字的不稳定性不会影响选择集。
但是对于实体就不一样了,因为它是被存放在图形数据库中的,名字的不稳定性要影响到对实体的操作。
应用程序必须在下一次对同一图文件中的同一实体进行操作,可以使用实体句柄,重新获取其实体名。
选择集的处理ObjectARX函数对选择集的处理类似于A utoLI SP。
acedSSGet()函数提供大多数创建选择集方法。
它一般通过以下三种方法之一创建选择集:(1)提供让用户选择对象。
(2)象交互式应用A utoCAD一样,利用RICKFIRST定义、C rossing、C ross ing P olygon、Fence、Las t、P revious、Window、Window Polygon等匹配条件的方式来选择实体对象,也可以通过指定一个单独点或Fenc e点来选择。
AutoCAD钣金常用命令(含二次开发)

编辑类 11 图形尺寸放大2倍 CCZ 图形尺寸缩小2倍 CCH 删除重叠线 CCS 变多义线 将实体做成图块 转DXF文档(单一图层,R12版) 尺寸匹配图框 说明文字高度与图框匹配 多重复制 旋转复制 镜像后删除原件 查询类 3 板材折弯系数查讯 CD 螺母螺柱底孔查讯 CDD 翻边攻牙底孔查讯 ZE CALC UO 辅助类 5 打开所有捕捉 关闭所有捕捉 视图最大化 调用系统计算器 座标原点设定
AutoCad 常用系统命令
绘图类 5 L 直线 REC 长方形 A 圆弧 C 圆 输入文字 T 修改类 14 E 删除 CO 复制 MI 镜像 O 偏移 M 移动 CR 旋转 SC 比例 S 拉伸 TR 修剪 EX 延伸 BR 打断 CHA 倒斜角 FR 倒圆角 X 炸开 绘制类 23 A31 插入A3横图框(设计) A32 插入A3横图框(制造) A41 插入A4横图框(设计) A42 插入A4横图框(制造) DX X坐标标注 DY Y坐标标注 AG 双向尺寸标注 G1 输入对称公差 G2 输入不对称公差 BT 相同孔径标识 BC 插入钳工注释 BF 插入工艺栏 RY 插入ROHS标识 RN 插入非ROHS标识 VV 绘制剖面线 SCT 剖视注解填写 ZCL 插入折弯系数 NN 毛刺向上注解 PATH 插入文件路径 OB 画腰形孔 CRR 打点十字线自动添加 CMK 孔径快速统计 DOOR 门板自动展开 DZ SZ AAA FE FX DXF MD TTT CM CR TT
autocad的二次开发
autocad的二次开发(1)编写各种用户自定义函数并形成假设干LISP、ARX、VLX或ADS文件,以及一些DCL文件。
(2)建立符合自己要求的菜单文件,一般可在AutoCAD原菜单文件内添加自己的内容,对于AutoCAD2000版本还可增加部分菜单文件,然后经交互方式加入到系统中去。
(3)在系统的ACAD、LSP或类似文件中加入某些内容以便进行各种初始化操作,如在启动时立即装入一些文件等。
(4)通过系统对话框设置某些路径。
这些操作在程序开发成功后向其它AutoCAD系统上安装应用,特别是需要大批安装时,需要进行很多文件检索、内容增删、子目录创建、文件拷贝、系统设置等繁琐工作,如能令上述工作全部自动进行,使整个二次开发程序在无人干预的情况下嵌入系统,将大大提高工作效率。
为此笔者用VC++开发了一套自动安装程序,使原本需要【五】六分钟的人工操作在十几秒内即可自动完成。
【一】基本思路整个安装程序遵循以下思路:1〕首先获得所在机器AutoCAD2000系统的安装路径;2〕寻找菜单文件AutoCAD2000\\support\\acaD、mnu,打开文件并将要添加的内容加至末尾;3〕寻找LISP文件AutoCAD2000\\support\\acad2000doC、lsp,打开文件并将要添加的内容加至末尾;4〕创建一个预先命名的子目录,将所有二次开发形成的各类文件拷入;5〕给出信息框,告知安装成功,如有问题那么告知安装失败。
需要指出的是,在添入acad2000doC、lsp的内容中须有如下语句:〔command“_menu”〔strcat〔getvar”menuname”〕”、mnu”〕〕,目的是为了强制执行菜单文件装入命令,将改动后的acaD、mnu文件编译后装入。
另外,在添入acad2000doC、lsp的内容中还有一赋值语句,将准备创建的包含所有二次开发生成文件的子目录全路径名赋予一全局变量,以供二次开发程序在需要时调用,从而避免了在AutoCAD环境下交互设定路径的麻烦。
CAD二次开发程序使用说明
CAD二次开发程序使用说明CAD二次开发程序使用说明:1.打开CAD,调用并加载ARX程序,输入命令“ly”,弹出如下的对话框。
点击确定。
2.点击确定,弹出如下的对话框。
在该对话框里,有两种主要功能组合可供使用。
3.在如上对话框里可以选择不同的点选控件,完成不同的操作。
现将一一解释说明。
(一)多段轴绘制可以点击“多段轴绘制”选择控件“n=3”或者“n=4”,弹出如下的对话框:可以看到在“多段轴n=3”以及“多段轴n=4”对话框中,可以对轴的基点进行自定义,可以手工输入轴的基点,同时还可以自定义轴的各段轴的半径和轴长,完全做到对轴的自定义。
同时还可以选择“举例”控件,熟悉了解该对话框的功能。
图如下:点击“画轴”按钮,将会在CAD中,画出已经标注好的轴。
如下举例:(二)深沟球轴承校核可以选择“轴承相关”里的“深沟球轴承校核”“60000”选择控件,弹出如下的对话框:(1)在该对话框里,可以在“初始参数”里手工输入你所需要的参数“Fr”,“Fa”,“n”,“Lh’”,“fp”“C0”,“C”,也可以在“举例”里选择“举例参数”“轴承”等等来自动输入固定的参数(仅用于演示操作)。
(2)点击按钮“初步计算”,可以看到“选择框”中,“Fa/Fr”,“Fa/C0”自动算出,根据“Fa/C0”的范围,在“Fa/C0选择”框里选择范围(有五组,从0.0025-0.5000),此时“插值参数”框里有关参数如“e1”,“e2”等自动给出。
(3)点击插值按钮,可以看到“选择框”中,“e”,“X”,“Y”已经计算给出,此时插值计算完成。
(4)最后点击“校核”按钮,“P”“Lh”会计算出来,同时根据计算结果,程序判断“Lh”是否小于“Lh’”,如果是,则会弹出如下的对话框:如果不是,则表示校核合格,弹出对话框如下:(5)点击“确定”按钮,返回上一级对话框。
(三)角接触球轴承校核可以选择“轴承相关”里的“角接触球轴承校核”“70000C”选择控件,弹出如下的对话框:(1)在该对话框里,可以使用右下角的“举例”组合框,选择“初始参数”“7207C”(可以单独选择),也可以手工在“初始参数”框里定义你所需要的单元值如“Fte”,“Fre”,“Fae”“L1”,“L2”“R”等等,完成对参数的定义。
CAD二次开发命令
多义线POLBF 直线打断点FD或M 移动CF 表示所有相同圓的半徑RE 刷新RS 恢复涂层XV 組原地造块X 打散ARC 圆弧SC 改变比例(扩大.缩小)REC 矩形MI 复制镜象R 偏移OP 更改EX 延伸LI 测量弧長WW 直线连线XF 直线MD 字和图形自动匹配FE 整体公件位移TT 注解WW 合并断线AAD 顯示圖紙質料ED编辑DCO 连续标注DOR 坐标标注DBA 基线标注EL 画椭圆SCT 抽行標注LE 箭头标注MT 寫字AR 阵列H 填充自动動更新圖框的path AUTOWF MIRRTEXT 鏡象字體H 填充CHA 倒斜角DMC 检查标注尺寸是否修改WC 建立坐标系CX 成型示意图AC图形属性复制ZE 桌面最大化QW 多功能打印QC 圆孔自动标注直径尺寸EA 清除无用的图层图块EW修改多义线宽度OP 系统MENULOAD 插入二次命令一. 常用命令圓孔處動直徑尺寸標注QC 孤立物体所在層FV孤立物体所在層AS解冻所有圖層TA凍結所有非當前圖層FA恢复图层RS清理無有圖層圖塊EA層操作之切換層切換到0層Q切換到bend層BE切換到center層CE切換到dim層DI切換到hatch層HA切換到hidden層HI切換到laser層LA切換到nct層NC切換到prep層PP切換到text層TE批量修改孔徑BD普通复制CC/CO多重复制AA快速倒圓角FR普通倒圓角 F普通偏移R刪除式鏡像ER普通鏡像FG參考式旋轉RR拷貝式旋轉CR普通旋轉RT單點剪切BF插入折床压印字体TGE ‘FI删除普通剪切BR修改多義線寬度EW移動FD裁剪TR修改塊屬性AD格式刷G直线線 A 、L打开文件QQ另存文件SA快速标注QC直线标注DF斜线标注DG半线标注DR直线标注DD角度线标注DA選擇圖框确定標注樣式MD DXF输出DXF二.展開排配插入a3图框A3插入a4图框A4自动填写图框WF自动更新图框的path AUTOWF 插入明细細欄TT标注相同孔徑的圓孔BT剖视图标注SCT画剖视图符号號SS技術要求注解ZT刻蝕字体的炸開XT三.模具中心攻牙孔TAP自動路徑WAY。
AutoCAD二次开发指令汇总
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
插入剖视符号 图框匹配 变多义线 箭头线 剖视线 归位至原点(0,0) 旋转剖面 转换成LASER层 转换成MARK层 查找修改过的尺寸 文本与图框匹配 尺寸与图框匹配 加载指令包 新建图形 显示所有图层 回上一步操作 放大25.4倍 X标注,Y标注 图框单个或多个修改 縮小25.4倍 NCT程式号的输入 自动保存 旋转复制与RR相似 连续标注尺寸 基准叠加标注 快速引线标识
展开常用Auto cad命令
简化指令 G1: G2: G4: E3: BDC: QE: EC: FI: MENULOAD: A: AD: LTS: AL: AR: AT: B: BT: BB: BR: C: CA: CB: CC(CM): CV(VC): CAL(CX): CAD: DE: D: DA: DD: DF: DG: DR: DT: DDIM: E: ED: EX: ER: 功能 正负相同公差 正负不同公差 重要公差管控 焊接符号表示图 折弯干涉查询 简化指令 MT: OS: PL: PR: PT: 功能 多行文本 捕捉点设置 画多义线 环境设置 点样式 打开文件 射线 重做 重生成 画矩形 重命名 部视放大(尺寸不改变) 画图辅助 旋转 拉伸 另存为 最大外形尺寸标注 放大 画直线 文本格式 修剪 变成块 取消操作 平移 转换成0层 结构线 焊接直线 建立块文件 炸开 参考线 缩放镜 属性匹配 镜像或镜像移动 插入块 图层编辑 列示物体性 编辑线型 恢复标准图层 打开捕捉
给尺寸添加T,TT(表含料厚) TTT:
五金件底孔及其它功能查询 QQ: 工程图设变插入设变小图框 RA: 过滤器 CAD二次加载设置 画圆弧 图框填写 线性比例(相对于线而已) 对齐 阵列 属性定义 建立块 圆孔统计 动态修改属性 打断实体 画圆 倒斜角 复制成块 复制及多重复制 偏移/偏移动 计算器 自动标注 将图形尺寸放大25.4倍 测量距离 角度标注 直径标注 垂直标注 对齐标注 半径标注 动态文本 尺寸样式设置 删除 编辑文本 延伸 插入图框,明细等 RD: RE: REC: REN: RS: RM: RT: S: SA: EER: SC: SS: ST: T: FX: U: W: Q: XV(XS) TE: WB: X: XX: Z(ZE): G: GG(TT): I: LA: LI(XD): LT: RB: CD:
EA: F(FR): FD: FF: BE(3): NC(2): DI: PP(4): RC: MOC: ADT(ADTT): FV: DIV: DW: CK: CMK(WWW): FS: AG: AB: SZ: PPP: NCT: RR: DED: DCE: DAN:
清除未用到的图层和图块 倒圆角 移动 倒直 转换成折弯线 转换成NCT工站线 转换成尺寸标注层 转换成成型图层 计算两尺寸的差值 批量修改孔径的直径 冻结所选图层 等分某线或物体 只显示所选图层 标识同一种圆孔 标识所有圆孔 删除重复线 X.Y标注尺寸 图框大小匹配 縮小2倍 LASER程式号的输入 查看排版优化方向 旋转跟RT有所不同 编辑标注尺寸 自动添加圆心中心线 定两点标注角度