大家好,
很多时候,当我对绘制的对象进行曲面处理时,我的曲面共享一条边(和两个垂直度),因此,我不需要两次拾取这些点,而是希望使用lisp,获取为垂直度3和4选择的点,并将其保存,以便稍后分别作为垂直度2和1使用。
以下是我目前掌握的信息:
- (defun c:sfs ()
- (if (eq rst "")
- (setq rst "Yes")
- (progn
- (initget "Yes No")
- (setq rst (getkword "\nWould you like to reset this macro? (Y, <N>)"))))
-
- (if (eq rst "Yes")
- (progn
- (setq art ""
- pt1 ""
- pt2 ""
- pt3 ""
- pt4 ""
- px1 ""
- px2 ""
- px3 ""
- px4 ""
- py1 ""
- py2 ""
- py3 ""
- py4 ""
- pz0 ""
- edh "")
- (initget 1 "Rectangular Circular")
- (setq art (getkword "\nWhat type of Array?< Rectangular Circular >: "))
- (command "_.pline" pause pause pause pause "cl"))
- (progn
- (command "_.pline" pt1 pt2 pause pause "cl")))
-
- (setq pl1 (mapcar 'cdr(vl-remove-if '(lambda(x)(/= 10(car x)))(entget(entlast))))
- px1 (car (nth 0 pl1))
- py1 (cadr (nth 0 pl1))
- pz0 (nth 0 (mapcar 'cdr(vl-remove-if '(lambda(x)(/= 38(car x)))(entget(entlast)))))
- px2 (car (nth 1 pl1))
- py2 (cadr (nth 1 pl1))
- px3 (car (nth 2 pl1))
- py3 (cadr (nth 2 pl1))
- px4 (car (nth 3 pl1))
- py4 (cadr (nth 3 pl1))
- pt1 (list px1 py1 pz0)
- pt2 (list px2 py2 pz0)
- pt3 (list px3 py3 pz0)
- pt4 (list px4 py4 pz0))
- (command "_.erase" "l" "")
-
- (entmake (list (cons 0 "3DFACE")
- (cons 8 "Temp")
- (cons 100 "AcDbEntity")
- (cons 100 "AcDbFace")
- (cons 10 pt1)
- (cons 11 pt2)
- (cons 12 pt3)
- (cons 13 pt4)
- (cons 70 15))))
- (cond (eq art "Rectangular") (progn
- (setq pt1 (list px4 py4 pz0)
- pt2 (list px3 py3 pz0)))
-
- (eq art "Circular") (progn
- (setq pt1 (list px1 py1 pz0)
- pt2 (list px4 py4 pz0))))
- )
我离得很近,但最终并没有改变pt1和pt2的坐标。
任何帮助都是非常感激的。 |