又是我问了另一个问题。
我正在编写一个lisp来插入一个块,如果你选择的话,你可以用一个引线来标记它,它会自动填充另一个块和属性文本。具有属性文本的块是一个简单的动态块,具有一个额外的插入点。因此,当您要插入属性块时,只需按CTRL键,即可循环切换到右侧或左侧的to插入点。
我想在lisp中定义使用哪一边。这是我的逻辑。
P1(x1,y1)是要详细说明的块的插入点。
P2(x2,y2)是我的领导者登陆点
如果x2>=x1,则使用右侧(原始插入点),否则使用左侧(由动态块定义的第二个点)
第一部分很简单。我将使用P2作为插入点。这是第二种选择。我需要告诉autocad首先使用第二个点作为插入点,然后将其插入P2。这可能吗?
我想我可以做两块,一块是右侧插入,一块是左侧插入。我宁愿要一个,但如果我需要2个,我会的。
- ;;;---------------------------------------------------------
- ;;;
- ;;;under development
- ;;;
- ;;;---------------------------------------------------------
- (defun C:FPJ1 (/ )
- (setq CRcecho (getvar "cmdecho")) ;;;store curret sysvar
- (setq CRdimas (getvar "dimassoc"))
- (setvar "cmdecho" 0)
- (setvar "dimassoc" 2)
- (setq CRdmsty (getvar "DIMSTYLE"))
- ;------------------------------------------------------------------------
- (setq *error* ;;;resets sysvar incase of
- (lambda (msg) ;;;an error, esc, exit, cancel
- (setvar "cmdecho" CRcecho)
- (setvar "dimassoc" CRdimas)
- (command "-dimstyle" "r" CRdmsty)
- (princ msg)
- (princ)))
- ;------------------------------------------------------------------------
-
- (setq FPTag "C:/Documents and Settings/TEMP/My Documents/LISP/fpart/fpart")
- (setq FPPaP "C:/Documents and Settings/TEMP/My Documents/LISP/fpart/F")
- (or *FPnameG* (setq *FPnameG* "?"))
- (setq CRuprec (getvar "LUPREC"))
- (setq CRLunit (getvar "LUNITS"))
-
- (or
- (eq "" (setq tmp (getstring (strcat "\nF-Part to insert <" *FPnameG* ">: "))))
- (setq *FPnameG* tmp))
-
- (setq FPPath (strcat FPPaP *FPnameG*))
- (initget "Yes No")
- (setq TagAns (getkword (strcat "\nTag Fpart? [Yes/No] <No>: ")))
- (if (/= TagAns "Yes")
- (progn
- (setq FPP1 (getpoint "\nSpecify insertion point: "))
- (command "-insert" FPPath FPP1 "1" "1" pause))
-
- (progn
- (setq FPAtTxt (strcase (strcat "F" (substr *FPnameG* 1 2) "." (substr *FPnameG* 3 2))))
- (setq FPP1 (getpoint "\nSpecify insertion point: "))
- (command "-insert" FPPath FPP1 "1" "1" pause)
- (command "-dimstyle" "r" "leader")
- (setq CRDSCL (getvar "DIMSCALE"))
- (initget 6)
- (setq FPDSCL (cond
- ((getreal (strcat "\nSpecify scale factor <" (rtos CRDSCL CRLunit CRuprec) ">: ")))
- (CRDSCL)))
- (setq FPLP1 (getpoint "\nSpecify point of leader landing"))
- (if (<= (car FPLP1) (car FPP1))
- (setq FPLP2 (list (- (car FPLP1) 0.125) (cadr FPLP1)))
- (setq FPLP2 (list (+ (car FPLP1) 0.125) (cadr FPLP1)))
- )
- (princ "\n>>Press *Ctrl* to cycle insertion point")
- (command "_.leader" FPP1 FPLP1 FPLP2 "" "" "b" FPTag pause FPDSCL FPDSCL "0" FPAtTxt)))
- ;--------------------------------------------------------------------------
- (setvar "cmdecho" CRcecho) ;;;restore previous settings
- (command "-dimstyle" "r" CRdmsty)
-
- (princ)
-
- )
|