AutoLisp 工作应用程序:2.实用小程序(源码) – 化工研习
一、基础知识1. Lisp基本格式有两种:第一种:(defun c:RO ()
……
)
第二种:(defun Temp_test (x y z)
……
)
第一种相当于自定义一个命令”RO”,如果与CAD本身命令有冲突,则将CAD命令覆盖!运行方式:直接在命令行输入”RO”
第二种相当于定义一个子函数,是为主程序服务的!
在主程序中调用方式:(defun c:RO ()
……
(Temp_testx y z)
……
)
在CAD中的调用:在命令行中输入”(Temp_testx yz)”
二、基础子程序1
1)利用Lisp批量建立图层 (对图层的颜色和线性没有特殊要求, Layer1、Layer2、Layer3为新建图层)
(defun Create_Layer1 () (mapcar '(lambda (x) (if (tblobjname "Layer" x) nil (command "_.layer" "make" x "") ) ) (list "Layer1" "Layer2" "Layer3") ;将需要创建的图层写道此处 ) )
2)利用Lisp 建立图层 (建立图层时设置图层颜色和线性Layer1为新建图层)
(defun Create_layer2 () (setq chklay (tblsearch "layer" "Layer1")) ;先查询是否存在"Layer1" (if (null chklay) (command "layer" "n" " Layer1" "c" "1" " Layer1" "") ;建立新的图层 ) )注:”C”—> 设置图层颜色 “1″为红色;还可以设置其他选项具体请查看命令”-LAYER”
3) 利用Lisp 插入块
(defun ReInsert (pt scale ang) (command "insert" "C:\\PUBLIC\\Block\\LIFTING DIAGRAM.DWG" pt scale ang) )这是最简单的插入块的Lisp程序!
它可以应用于:不需要打开图纸可以将图纸中的块插入到新的图纸
批量插入相同或者不同的块
单一块插入时自定义插入比例大小、角度等
注:路径前加”*”号可以将块插入到新的图纸的块自动炸开
例如:(command “insert” “*C:\\PUBLIC\\Block\\LIFTING DIAGRAM.DWG” pt scale ang)
实例:
实现目的:在新的图纸中框选一定区域后将目标块插入进来,并放大或者缩小到框选区域内!
实现方式:C:\PUBLIC\Block\目录下有自定义的CAD文件(块文件),利用上面的Lisp程序将此文件插入到新的图纸中
实现原理:取得框选的两个坐标点然后计算比例,使得插入的块在块选区域内
(defun c:ptt() (setq pt1 (getpoint)) (setq pt2 (getcorner pt1)) (setq d1 (- (car pt2) (car pt1))) (setq d2 (- (cadr pt2) (cadr pt1))) (setq pt (mapcar '+ pt1 (list (/ d1 2.0000) (/ d2 2.0000))))(IF (> (abs d1) (abs d2)) (setq a (/ (abs d2) 100.000)) (setq a (/ (abs d1) 100.000))) (command "insert" "*C:\\PUBLIC\\Block\\LIFTING DIAGRAM.DWG" pt a 0) (princ))
结束语:更多源码 敬请关注化工研习网
http://hgyx.us/hgyxus/wp-content/uploads/2014/05/ZYW-150x150.jpg
作者: ElvisnowR5
结构工程师现任职某知名国外工程公司
转载请注明:化工研习 » AutoLisp 工作应用程序:2.实用小程序(源码)
来源:网络转载
http://meng.horse/xwb/images/bgimg/icon_logo.png 该贴已经同步到 Horse的微博 谢谢楼主分享 {:1106_365:}
谢谢分享,学习了 谢谢楼主分享
- 本文出自马后炮化工论坛,原文地址:http://meng.horse/thread-87920-1-1.html 谢谢分享学习了 lisp值得学习,谢谢楼主分享,分享无限 谢谢楼主分享的资料 谢谢楼主分享 希望lisp多交流 {:1106_362:}{:1106_362:}{:1106_362:}
谢谢分享学习了
页:
[1]