lisp励遍图块中的实体_实体名创建成的选择集,如何遍历? – AutoLISP/Visual LISP 编程技术 – CAD论坛 – 明经CAD 区 – Powered by Discuz!…

;;——-标准尺寸界线–开始—————————-

(defun c:ccjx-h(/ ss n p ang pts spname 1st )

(setq spname (nth 0 (entsel “n请选择尺寸线【定角度】:”))) ;;;;;;取得线性实体的实体名

(setq ang (sl-entang spname))

(setq ang (* 180.0 (/ ang pi)))  ;弧度转角度

(setq 1st (list spname)) ;;;;;实体名构建表1st

(setq ss (ssget ‘((0 . “*LINE,ARC,CIRCLE,ELLIPSE”))))

(setq p (sslength ss))

(setq n 0)

(setq p (- p 1))

(while (

(setq spname (ssname ss n))

(setq 1st (cons spname 1st))  ;;;;;创建1st表,并把 spname 放在开头

(setq n (+ n 1))

)

(setq 1st (gps->lst-delsame 1st)) ;;;删除表中重复图元

(setq pts (sl-ssinters 1st))

(foreach pt pts

(command “-insert” “_archtick” pt SLBL SLBL ang)

)

)

;;;xshrimp的函数(一级函数)

;;;删除表中重复图元.不支持表中表的重复图元.

;;; (gps->lst-delsame ‘(1 2 1 2 (1 1) (1 2 1 2 1) 1 2 (1 1) (1 2)))

;;;  –>(1 2 (1 1) (1 2 1 2 1) (1 2))

(defun gps->lst-delsame (lst / lstitem lstnew)

(foreach lstitem lst

(if (not (member lstitem lstnew))

(setq lstnew (append lstnew (list lstitem)))

)

)

lstnew

)

;;–取线性实体角度 ang-输出为弧度-(一级函数)—————————————————

;;–spname为线性实体的实体名—————————————————–

(defun sl-entang (spname / pt1 pt3 pt4  k1 k2 ang)

(if (= “LINE” (cdr (assoc 0 (entget spname))))

(progn

(setq pt1 (entget spname))

(setq pt3 (cdr (assoc 10 pt1)))

(setq pt4 (cdr (assoc 11 pt1)))

)

)

(if (= “LWPOLYLINE” (cdr (assoc 0 (entget spname))))

(progn

(setq pt3 (vlax-curve-getstartpoint spname)) ; 对象的起点

(setq pt4 (vlax-curve-getendpoint spname)) ; 对象的终点

)

)

(setq k1 (nth 0 pt3))  ;;;;;点的X坐标

(setq k2 (nth 0 pt4))  ;;;;;点的X坐标

(if (

(setq ang (angle pt3 pt4))

)

(if (

(setq ang (angle pt4 pt3))

)

(if (= k2 k1)

(setq ang (/ pi 2))

)

ang   ;;;;弧度角度

)

;;;曲线【实体名表】–求交点(一级函数)

(defun sl-ssinters (spname / pts en1 en2 spname1)

(while (setq en1 (car spname))

(setq spname (cdr spname));;;剩下的元素

(setq spname1 spname)

(while (setq en2 (car spname1));;;返回表中的第一个元素

(setq pts (append pts (sl-Curveinters en1 en2)))

(setq spname1 (cdr spname1));;;剩下的元素

)

)

pts

)

;;;曲线【选择集交点】-求交点(一级函数)(备用)

(defun ss-ssinters (ss / pts en1 en2)

(while (> (sslength ss) 1)

(setq en1 (ssname ss 0))

(ssdel en1 ss)

(setq n (sslength ss))

(repeat n

(setq en2 (ssname ss (setq n (1- n))))

(setq pts (append pts (sl-Curveinters en1 en2)))

)

)

pts

)

;;说明:;;;两实体交点,en1 en2 为实体名 (一级函数)

(defun sl-Curveinters (en1 en2 / pl pts)

(setq pl (vlax-invoke (vlax-ename->vla-object en2) ‘IntersectWith (vlax-ename->vla-object en1) acExtendNone))

(while pl

(setq pts (append pts (list (list (car pl) (cadr pl) (caddr pl))))

pl (cdr (cdr (cdr pl)))

)

)

pts

)

;;说明:;;———尺寸界线—-结束

相关资源:凯利公司 KDZ 系列有刷串励、永磁、他励电机控制器设置软件.rar

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2020年11月19日
下一篇 2020年11月19日

相关推荐