Horse 发表于 2014-8-2 21:11:28

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的微博

saintcaptain 发表于 2014-8-2 21:11:28

谢谢楼主分享            

tianshanxue 发表于 2014-8-2 21:11:28

{:1106_365:}
谢谢分享,学习了

wangchen1971 发表于 2014-8-2 21:11:28

谢谢楼主分享
- 本文出自马后炮化工论坛,原文地址:http://meng.horse/thread-87920-1-1.html

爱玩的小学生 发表于 2014-8-2 21:11:28

谢谢分享学习了

kinyon 发表于 2014-8-2 21:11:28

lisp值得学习,谢谢楼主分享,分享无限

whng 发表于 2014-8-2 21:11:28

谢谢楼主分享的资料

whng 发表于 2014-8-2 21:11:28

谢谢楼主分享   

qyf 发表于 2014-8-2 21:11:28

希望lisp多交流

26974857 发表于 2014-8-2 21:11:28

{:1106_362:}{:1106_362:}{:1106_362:}

whng 发表于 2014-8-2 21:11:28


谢谢分享学习了
页: [1]
查看完整版本: AutoLisp 工作应用程序:2.实用小程序(源码) – 化工研习