网通访问 |电信访问 | 网络测速 | 联系管理员 |安全退出论坛,保护账号安全!
发新话题
打印

ACAD二次开发小程序

本主题由 cloud_ 于 2008-4-10 14:43 移动

我也奉献几个ACAD二次开发小程序------以此支持并呼应新任版竹KOKO1998

看到此版块有新任斑竹并发出教程贴,由衷的高兴,感觉也许此版块以后会有一些新气象和生机,我在此表示祝贺,当然更应有点行动,所以也来几个ACAD二次开发小程序,需要解释一下的是,这是我在97年使用ACADR12时的作品,由于当时根本看不到HMCAD与THMCAD以及INTERCAD这样的二次开发软件,所以当时下了许多功夫去编写一些AUTOLISP程序,比如自动输入图框和标题栏,标注粗糙度符号,标准轴素生成等等,但现在都没用了,因为软件开发商的水平比我高得多,不过还有几个到现在我还在用.  现在我拿出来,奉献给各位.
附件: 您所在的用户组无法下载或查看附件
模 具 论 坛 可 不 是 魔 聚 论 坛 LYXDJT1210@SINA.COM

TOP

ACAD二次开发小程序

(defun c:ZA()
(command "zoom" "a"))
命令:ZA
这是一个ZOOM的子命令,相当与执行ZOOM后的选项A,恢复到全视窗.
模 具 论 坛 可 不 是 魔 聚 论 坛 LYXDJT1210@SINA.COM

TOP

(defun c:ZP()
(command "zoom" "p"))
命令:ZP
这也是一个ZOOM的子命令,相当与执行ZOOM后的选项P,恢复到前视窗.
模 具 论 坛 可 不 是 魔 聚 论 坛 LYXDJT1210@SINA.COM

TOP

(defun c:JSQ() (COMMAND "SH" "CALC"))

命令: JSQ

在ACAD环境中执行WINDOWS下计算器的命令.

模 具 论 坛 可 不 是 魔 聚 论 坛 LYXDJT1210@SINA.COM

TOP

(defun c:UCSO() (command "UCS" "O"))

命令:UCSO

大家不要小看它,它让你立刻执行重新设置用户坐标系原点,这可是为方便做图使用频率最高的命令了.

模 具 论 坛 可 不 是 魔 聚 论 坛 LYXDJT1210@SINA.COM

TOP

一个朋友让我帮忙修改的程序--选择一个线性标注尺寸,不用回车或单击右键直接加上Φ:

(defun c:dw (/ n nt qsel sel) (setvar "cmdecho" 0) (setq sel (entsel "\n选择要加φ的尺寸:")) (if (= (cdr (nth 31 (entget (ssname qsel n)))) "AcDbAlignedDimension") (command "dimoverride" "dimpost" "%%c<>" "" sel "") ) (setvar "cmdecho" 1) (princ) )

怎么修改?

你的进步就是我的成绩! 紧急问题请发Email:xmltc@163.com

TOP

;;程序1:核心部分主程序可以实现无须右键确认增加前缀φ;;
(defun c:dw (/ sel)
  (setvar "cmdecho" 0)
  (setq sel (entsel "\n选择要加φ的尺寸:"))
  (command "dimoverride" "dimpost" "%%c&lt;&gt;" "" sel "")
  (setvar "cmdecho" 1)
  (princ)
  )
你的进步就是我的成绩! 紧急问题请发Email:xmltc@163.com

TOP

;;程序2:防止误选与不选;
(defun c:dw (/ sel)
  (setvar "cmdecho" 0)
  (while (= sel nil) (setq sel (entsel "\n选择要加φ的尺寸:")));防止不选;
  (command "dimoverride" "dimpost" "%%c&lt;&gt;" "" sel "")
  (setvar "cmdecho" 1)
  (princ)
  )
你的进步就是我的成绩! 紧急问题请发Email:xmltc@163.com

TOP

;;防止错选; (defun c:dw (/ sel typ nth38 nth32 condition) (setvar "cmdecho" 0) (setq condition 0);虚拟一个变量作为循环终止条件; (while (= condition 0) (progn (setq sel (entsel "\n选择要加φ的尺寸:")) (if (= sel nil) (princ);如果没有选择倒回去再选; (progn (setq typ (cdr(assoc 0 (entget(car sel))))) (if (= typ "DIMENSION") (progn (setq nth38 (cdr(nth 38 (entget(car sel))))) (setq nth32 (cdr(nth 32 (entget(car sel)))));筛选出标注; );注意:当标注与对象关联时原始数据为38项,当没有关联时原始数据为32项; ) (if (or (= nth38 "AcDbRotatedDimension") (= nth32 "AcDbRotatedDimension"));OR是或者的意思,两个有一个成立即可 (setq condition 1) );当选择到转角时设置虚拟变量condition=1 ) ) ) ) (command "dimoverride" "dimpost" "%%c<>" "" sel "") (setvar "cmdecho" 1) (princ) )

写程序应该是这样的,先把程序结构(也就是框架与流程)明确了,实现基本功能再一步一步完善。

这是给初学者一个建议。

你的进步就是我的成绩! 紧急问题请发Email:xmltc@163.com

TOP

哎!钱不够啊!哈哈!以后得抓紧时间挣钱啊!

TOP

TOP

dll

TOP

这些是蛮简单的吧。老大,
设天下模具,奏时代强音。 QQ:43042925 MAIL:CONTINUE2002@163.COM

TOP

发新话题