Lisp for AutoCAD

Lisp for AutoCAD

1. 赋值

(setq num 1)
(setq str "")
(setq alist '())

2. 条件语句

  • orand
(or expression_1 expression_2)
(and expression_1 expression_2)
(not expression_1)
  • ifcond
(if (or blockName "Pipe")
    (print "Is true and print")
    (print "Is false and print")
)

(if (or blockName "Pipe")
    (progn
        (print "Is true and print first")
        (print "Is true and print second")
        (print "Is true and print third")
    )
    (progn
        (print "Is false and print first")
        (print "Is false and print second")
        (print "Is false and print third")
    )
)

(cond
    ((= flag "l") (print "Is l and print"))
    ((= flag "r") (print "Is r and print"))
    (t (print "default"))
)
  • repeatwhile
(setq n 10)
(setq i 0)
(repeat n
    (expression_1)
    (expression_2)
    (expression_3)
    (expression_4)
    (setq i (+ i 1))
)

(setq flag 10)
(while (> flag 0)
    (expression_1)
    (expression_2)
    (expression_3)
    (expression_4)
    (setq flag (- flag 1))
)
)

3. 函数

(defun faa()
    (expression_1)
    (expression_2)
    (expression_3)
    (expression_4)
)
; 以最后一句expressin的值为函数返回值


(defun fbb()
    (setq temp 100)
    (expression_1)
    (expression_2)
    (expression_3)
    (expression_4)
)
(print temp)
; 全局可见

(defun fcc(/temp)
    (setq temp 100)
    (expression_1)
    (expression_2)
    (expression_3)
    (expression_4)
)
(print temp)
; 局部变量 不可见

(fcc temp)
(defun fcc(temp)
    (setq temp 100)
    (expression_1)
    (expression_2)
    (expression_3)
    (expression_4)
)
; 传参

4. 列表

(setq alist (list 1 2 3 ))
(setq blist (list "a" "b" "c" ))
; 创建列表

(setq nlist (length alist))
; 得到列表长度

(setq ielement (nth i alist))
; 取出第 i 个

5. 字符串函数

(strlen "abc")  ; 3
(strcat "a" "bout") ; "about'
(substr "abcde" 2) ;"bcde"
(substr "abcde" 2 1) ;"b"
(substr "abcde" 3 2) ;"cd"
(wcmatch "name" "@@@@") ;用正则表达式匹配字符串

6. 选择集

(setq selection (ssget)) ; 在CAD中框选或点选建立选择集
(setq nss (sslength selection)) ;得到选择集长度
(setq iss (ssname selection i)) ;取出第 i 个选择集

7. 图元属性列表操作

(setq entity (entsel))   ;选中一个图元 得到一个列表,列表第一个元素是图元,第二个元素是点选时的坐标
(setq entityN (car entity)) ;取出列表第一个元素
(setq entityList (entget (car (entsel)))) ;通过entget 得到 图元的属性列表
(setq oldr (assoc item entityList)) ;通过群码item 在属性列表中取出群码值对
(setq newr (cons item newContent)) ; 建立要替换的群码值对
(setq entityList (subst newr oldr entityList))  ;替换
(entmod entityList) ;实现在CAD中的更新

8. vl函数

(setq newList (vl-sort newList
                    (function
                        (lambda (e1 e2)
                        (>
                            (setq e1X (nth 1 (assoc 10 (entget e1))))
                            (setq e2X (nth 1 (assoc 10 (entget e2))))
                        )
                        )
                    )
            )
)

9. vla 对象

(setq a (ssget))
(setq n (sslength a))
(setq b (ssname a 0))
(setq c (entget b))
(setq d (vlax-ename->vla-object b))
(setq e (vlax-safearray->list (vlax-variant-value (vla-getattributes d))))
(setq f (nth 0 e))
(setq rotation (vla-get-rotation f))
(vla-put-rotation f)

10. DCLreactor

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值