Autolisp对CAD二次开发如何返回图元之间的交点,求大神帮忙
;给你个示例代码,不开图批量设置文件夹下dwg字体并清理(defun c:puall( / cadobj file ob path vercad i styob styname docobj styles styhz txtob)(vl-load-com) (alert "请确认您已对图纸备份!!!
请确认待清理文件未被打开");取得目录(defun qf_getFolder (msg / WinShell shFolder path catchit) (vl-load-com) (setq winshell (vlax-create-object "Shell.Application")) (setq shFolder (vlax-invoke-method WinShell 'BrowseForFolder 0 msg 1)) (setq catchit (vl-catch-all-apply '(lambda () (setq shFolder (vlax-get-property shFolder 'self)) (setq path (vlax-get-property shFolder 'path)) ) ) ) (if (vl-catch-all-error-p catchit) nil path ));出错处理(defun *error* (msg)(if (= nil cadob)(princ "
您已取消操作!")(progn(Vlax-Invoke-Method cadobj 'Quit)(princ "
您已取消操作!")))(princ))(setq file nil)(setq path (strcat (qf_getFolder "请选取要清理的文件所在目录") "\\"))(setq cadobj (vlax-create-object "AUTOCAD.Application"))(setq n 0)(foreach file (vl-directory-files path "*.dwg" 1)(setq docobj (vla-open (vla-get-documents cadobj) (strcat path file)))(setq styles (Vlax-Get-property docobj 'textstyles))(setq styhz (vlax-invoke-method styles 'add "HZ"))(vlax-put-property styhz 'bigfontfile "hztxt.shx")(vlax-put-property styhz 'fontfile "simplexs.shx")(vlax-put-property styhz 'width 0.7)(Vlax-Put-Property docobj 'ActiveTextStyle styhz)(vlax-for txtob (Vlax-Get docobj 'ModelSpace)(cond((= "AcDbText" (Vlax-Get txtob 'ObjectName ))(vlax-put-property txtob 'stylename "HZ"))((= "AcDbMText" (Vlax-Get txtob 'ObjectName ))(vlax-put-property txtob 'stylename "HZ"))))(vla-purgeall docobj)(prompt (strcat "
" file " 已设置字体HZ,并清理完成"))(Vlax-Invoke-Method docobj 'SaveAs (strcat path file))(setq n (+ 1 n)))(Vlax-Invoke-Method cadobj 'Quit)(alert (strcat "共清理" (itoa n) "张图纸
请逐一检查"))(princ))(princ "
调用命令:puall 用前请备份,用后请核对")(princ)
;取得随机数值(defun lsp201510261 ( / n3 n4) (setq n3 (rtos (rem (getvar "Date") 1) 2 16)) (setq n3 (substr n3 18 1) n3 (atoi n3)) (setq n4 (rem (getvar "CPUTICKS") 10)) (fix (rem (+ n3 n4) 10)))原理:提取时间,然后提取CPU频率,两个数值相加除以10,取整数。
(vl-load-com)
(defun c:getint( / ent1 ent2 ps)
(setq ent1 (car (entsel "选择第一实体:")))
(setq ent2 (car (entsel "选择第二实体:")))
(print)
(setq ps (obj_int ent1 ent2))
)
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
;功能:返回两个对象的所有交点
;参数: ent1、ent2 均为ename对象
(defun obj_int (ent1 ent2 / ax_ent_1 ax_ent_2 intpoints points i)
(setq ax_ent_1 (vlax-ename->vla-object ent1)
ax_ent_2 (vlax-ename->vla-object ent2)
)
(setq intpoints (vla-intersectwith ax_ent_1 ax_ent_2 acextendnone))
(setq intpoints (vlax-variant-value intpoints))
(setq i 0)
(if (> (vlax-safearray-get-u-bound intpoints 1) 0)
(repeat (/ (+ 1
(- (vlax-safearray-get-u-bound intpoints 1)
(vlax-safearray-get-l-bound intpoints 1)
)
)
3
)
(setq points (append points (list (list
(vlax-safearray-get-element intpoints i)
(vlax-safearray-get-element intpoints (+ i 1))
(vlax-safearray-get-element intpoints (+ i 2))
)))
)
(setq i (+ 3 i))
)
)
points
)
采纳我之后告诉你,,这个我真的知道啊
居律力博: 当前AutoCAD的二次开发工具主要有:VisualLisp、VBA、ObjectARX和.NET API等.其中,VisualLisp与VBA较为简单,特别是VBA,使用方便且开发速度较快,但其功能相比ObjectARX有所不足,尤其是对面向对象的功能支持不好.而...
巴东县19191308035: LISP AutoCAD命令 - ?
居律力博: AutoLISP语言作为AutoCAD的二次开发工具,虽然在功能、运行速度和保密性等方面比起ARX等工具要逊色一些,但由于它易学易用,交互性好,灵活性强,对于那些经常使用AutoCAD进行绘图的普通用户来说,不失为一种理想的开发工具....
巴东县19191308035: 用autolisp对CAD二次开发如何打开和保存文件,求大神帮忙 - ?
居律力博: 很简单,使用open和save或者save as命令语句.
巴东县19191308035: autocad二次开发的怎样对AutoCAD进行二次开发 - ?
居律力博: 从AutoCAD 2.18开始推出AutoLISP开始到现在,我们所能使用的开发工具主要有:AutoLISP、VisualLISP、VBA、COM外部接口、ObjectARX、ObjectARX.NET等开发方式供用户选择.下面开始对上述开发方式进行简要介绍: AutoLISP是进行...
巴东县19191308035: CAD中VBA二次开发 - ?
居律力博: AutoCAD的二次开发主要涉及以下内容:(1)编写各种用户自定义函数并形成若干LISP、ARX、VLX或ADS文件,以及一些DCL文件.(2)建立符合自己要求的菜单文件,一般可在AutoCAD原菜单文件内添加自己的内容,对于AutoCAD2000版...
巴东县19191308035: AUTOCAD 二次开发用什么语言啊 - ?
居律力博: 根据你的基础和你的需求来 如果以前没有多少编程经验,你学习使用autolisp 就可以了,这个速成的,但编写的程序功能有限,如果你以前使用VC熟练,你可以使用ObjectArx来开发,具体版本根据你的需求,2002的用VC6 2004用VC2002 2006以上的就用 VS.net了,arx根据VC版本选择 如果你习惯VB 你可以用VBA开发,VBVC开发的功能强大,可以直接访问图形数据库 请参考Autocad论坛,都有介绍,还有免费老师 晓东: www.xdcad.net 和 明经通道
巴东县19191308035: 何谓CAD二次开发?AutoCAD都有哪些二次开发工具 - ?
居律力博: 朋友您好! 二次开发就是补充Cad软件本身所不具备的功能. 开发工具介绍: 当前AutoCAD的二次开发工具主要有:VisualLisp、VBA、ObjectARX和.NET API等.其中,VisualLisp与VBA较为简单,特别是VBA,使用方便且开发速度较快,...
巴东县19191308035: 简述AutoLISP语言的主要功能是什么 - ?
居律力博: LISP输入CAD 二次开发的一个最为简单易学的程序语言 简单的说就是在现有的 CAD 软件上进行定制修改,功能的 扩展,然后达到自己想要的功能.就好像买了一部智能手机,里面的软件根据你 自己的喜好和需求,再安装使用.目前几乎所有行业都有自己的行业软件,辅助 CAD 进行专业绘图工作.但 是没有任何一款软件能够满足所有人的需求,因此产生了个人定制的二次开发.在任何基于电脑的操作我们都可以简化流程、提高效率,让电脑在一定程度 上代替我们完成重复性、复杂性较高的任务.CAD 代替代替传统手工画图提高工 作效率、二次开发代替 CAD 手工画图提高绘图效率.
巴东县19191308035: autolisp与VBA的区别 - ?
居律力博: AUTOLISP是本身CAD自带的编译器,可以直接调动CAD的命令,比较方便.如果你本身不懂编程,那么学LISP会很快.如果你本身熟悉编程那么用VBA会比较快.因为我搞2次开发自己制作了些了一些小程序,全都是用LISP的,感觉比较方便,至于VBA,没尝试过.具体选择哪种还是要看你个人的情况.例如建立一个复杂的包括许多对话框的应用,AutoLISP支持对话框,但是不如VBA支持的程度强,同时,在AutoCAD中一个任务的情况下,VBA提供在对象级别上访问AutoCAD系统,但它对AutoCAD的一些基本命令的支持性并不是很好,而AutoLISP在这一点上却做的很好.总而言之各有千秋吧.
巴东县19191308035: 关于AUTOCAD二次开发AUTOLISP应用的问题?
居律力博: 【楼主】 很简单,最后两行中的circle 要用双引号,即 (command "circle" cen rad)(command "circle" cen (+ rad 30))