如何添加多个测试
如何向IF添加多个testexpr?(如果progn1(如果progn2(如果progn3 progn4)))
例如
(Defun C:ColDim ()
(setq p1 (getpoint "\nPick Center point."))
(setq p2 (getpoint "\nPick Corner point."))
(if(and (< (car p1) (car p2))(> (cadr p1) (cadr p2))) condtn1
(if(and (< (car p1) (car p2))(< (cadr p1) (cadr p2))) condtn2
(if(and (> (car p1) (car p2))(< (cadr p1) (cadr p2))) condtn3
(if(and (> (car p1) (car p2))(> (cadr p1) (cadr p2))) condtn4
))))
(defun condtn1 ()
)
(defun condtn2 ()
)
(defun condtn3 ()
)
(defun condtn4 ()
)
(princ)
) 我希望在这种情况下使用COND 我想要的是。
用户将拾取交点p1,然后拾取角点以添加尺寸p2,第二个点位置将指定尺寸的方向
我希望这是正确的方向
PS-尚未确定的要点
-这是我的第二个惯例。
(defun c:test2 ()
(setq p1 (getpoint "\nPick Center point."))
(setq p2 (getpoint "\nPick Corner point."))
(setq txt (getstring "\n Column Number: "))
(setq p3 (list (car p2)(cadr p1)))
(setq p4 (list (car p1)(cadr p2)))
(setq p5 (polar p3 (angle p1 p3) 400))
(setq p6 (polar p4 (angle p1 p4) 400))
(setq p7 (polar p2 (angle p1 p2) 565.68542495))
(command "_.dimlinear" "_non" p2 "_non" p3 "_non" p5 )
(command "_.dimlinear" "_non" p2 "_non" p4 "_non" p6 )
(entmakex (list (cons 0 "TEXT")
(cons 1 txt)
(cons 40 (getvar "textsize"))
(cons 10 p7)))
)
为什么使用text-entmakex,而使用dimension-command? 另一种方法:
(defun c:test (/ *error* DIMOFF P1 P2 P3 P4 SPC TXT UFLAG)
(vl-load-com)
(setq DimOff 400.0) ;; Dimension Offset Distance
(defun *error* (msg)
(and uFlag (vla-EndUndoMark doc))
(or (wcmatch (strcase msg) "*BREAK,*CANCEL*,*EXIT*")
(princ (strcat "\n** Error: " msg " **")))
(princ))
(setq doc (cond (doc) ((vla-get-ActiveDocument
(vlax-get-Acad-Object))))
spc (if (zerop (vla-get-activespace doc))
(if (= (vla-get-mspace doc) :vlax-true)
(vla-get-modelspace doc)
(vla-get-paperspace doc))
(vla-get-modelspace doc)))
(if (and (setq p1 (getpoint "\nPick Center Point: "))
(setq p2 (getpoint "\nPick Corner Point: "))
(/= "" (setq txt (getstring "\nColumn Number: "))))
(progn
(setq uFlag (not (vla-StartUndoMark doc)))
(apply (function vla-AddDimRotated)
(append (list spc)
(mapcar
(function vlax-3D-point)
(list (setqp3 (list (car p1) (cadr p2) (caddr p1))) p2
(polar p3 (angle p1 p3) DimOff)))
'(0.)))
(apply (function vla-AddDimRotated)
(append (list spc)
(mapcar
(function vlax-3D-point)
(list p2 (setqp4 (list (car p2) (cadr p1) (caddr p1)))
(polar p4 (angle p1 p4) DimOff)))
(list (/ pi 2.))))
(vla-AddText spc txt
(vlax-3D-point
(polar p2 (angle p1 p2) (sqrt (* 2. DimOff Dimoff)))) (getvar "TEXTSIZE"))
(setq uFlag (vla-EndUndoMark doc))))
(princ))
谢谢李
首先,我要感谢你的Lisp程序
第二,我试图搜索有关VLA函数的帮助,但没有找到,但在VBA部分中找到了,所以你能解释一下其中的一些函数吗。
函数的解释是为VBA编写的,因此您只需连接到Visual LISP即可。给出了参数及其顺序 因此,添加VLA以转换为VBA
不总是这样,但方法和属性是相似的。
页:
[1]
2