paulosalvado 发表于 2022-7-6 09:48:46

创建多个视图

你好,cad专家。
 
如何从附着的图像快速创建多个视图?
 
我有一个lisp例程,可以创建视图,但无法将ucs与创建的矩形对齐。
 

 
我的Lisp程序是。。。。
 
(Defun C:views ()

(Terpri)
(Setq Numero (getint "Starting Number > "))
(Setq Sair 0)

(Terpri)
(Setq txt (getstring "txt > "))


(While (/= Sair T)

(Setq Cont 0)
(Terpri)
(Setq Janela (car(entsel "Select view > ")))
(Setq Janela (entget Janela))
(Setq Tamanho (length Janela))

(Setq X1 nil)
(Setq X2 nil)
(Setq Y1 nil)
(Setq Y2 nil)
(Setq X nil)
(Setq Y nil)

(While (< Cont Tamanho)
(Setq Contagem (car(nth Cont Janela)))
(If (= Contagem 10)
(Progn
(Setq X (cadr (nth Cont Janela)))
(Setq Y (caddr(nth Cont Janela)))

(If (= X1 nil)
(Progn
(Setq X1 X)
)
)

(If (= Y1 nil)
(Progn
(Setq Y1 Y)
)
)
;************************************
(If (> X X1)
(Progn
(Setq X2 X)
)
)
(If (< X X1)
(Progn
(Setq X1 X2)
(Setq X1 X)
)
)
;************************************
(If (> Y Y1)
(Progn
(Setq Y2 Y)
)
)
(If (< Y Y1)
(Progn
(Setq Y2 Y1)
(Setq Y1 Y)
)
)
;************************************
)
)
(Setq Cont (1+ Cont))
)

(If (< Numero 10)
(Progn
(Setq Numero (itoa Numero))
(Setq Numero (strcat "0" Numero))
)
(Progn
(Setq Numero (itoa Numero))
)
)

(Setq X (list X1 Y1))
(Setq Y (list X2 Y2))

(Command "-View")
(Command "W")
(Command (strcat txt " " Numero))
(Command X)
(Command Y)

(Setq Numero (atoi Numero))
(Setq Numero (1+ Numero))

)
)

Tharwat 发表于 2022-7-6 10:08:50

请修改您的代码发布指南。
 
读这个。
 
http://www.cadtutor.net/forum/showthread.php?9184-代码发布指南

BIGAL 发表于 2022-7-6 10:14:31

在代码中输入“UCS OB Last UCS mynewucswithnum”,因为它创建每个矩形,这将在运行时为每个矩形创建UCS。

Smirnoff 发表于 2022-7-6 10:30:30

编码速度很快,但似乎可行。仅适用于多段线(矩形)。UCS方向通过“手动模式”。
 
(defun c:mvu(/ cPrf cNum cEnt pLst lbPt cAng mPt xPt *error*)

(vl-load-com)

(defun *error*(msg)
   (command "_.ucs" "_w")
   (setvar "CMDECHO" 1)
   (princ "\nExit MVU")
   (princ)
   ); end princ

(if
   (and
   (setq cPrf(getstring "\nSpecify view prefix: "))
   (setq cNum(getint "\nSpecify first view number: "))
   ); end and
   (progn
   (setvar "CMDECHO" 0)
   (while(setq cEnt(entsel
                (strcat "\nSelect rectangle for view ["
                        (itoa cNum) "] or Spacebar to Exit > ")))
(vla-GetBoundingBox
        (vlax-ename->vla-object(car cEnt)) 'mPt 'xPt)
(vl-cmdf "_.ucs" "_w")
(setq pLst(mapcar 'cdr(vl-remove-if-not
          '(lambda(c)(= 10(car c)))(entget(car cEnt))))
      lbPt(trans(car(vl-sort pLst '(lambda(x1 x2)(<(car x1)(car x2)))))0 1)
      mPt(vlax-safearray->list mPt)
      xPt(vlax-safearray->list xPt)
      cAng(getangle lbPt "\nSpecify angle for X axis > ")
      ); end setq
(if cAng
(progn
   (vl-cmdf "_.ucs" "_z" (angtos cAng))
   (command "_.zoom" "_w" (trans mPt 0 1)(trans xPt 0 1))
   (command "-view" "_s" (strcat cPrf " "(itoa cNum)))
   (command "_.zoom" "_p")
   (setq cNum(1+ cNum))
   ); end progn
); end if
); end while
   (command "_.ucs" "_w")
   (setvar "CMDECHO" 1)
   (princ "\nExit MVU")
   ); end progn
   ); end if
(princ)
); and of c:mvu

paulosalvado 发表于 2022-7-6 10:38:40

非常感谢各位
 
尤其是斯米尔诺夫
 
很抱歉耽误了您的时间,但工作。。。。令人惊讶的是,他如何复制。。。。
 
当做
保罗·萨尔瓦多

Smirnoff 发表于 2022-7-6 10:51:46

不客气。即使我没有那么有人会永远帮助你。
 
当然,如果条件合理的话。。。
页: [1]
查看完整版本: 创建多个视图