smartstar 发表于 2013-11-29 11:27:01

这样的程序如何简化?

(defun c:ddd ()
(setq n -1)
(if (setq ss (ssget '((0 . "LEADER"))))
    (while (setq entname (ssname ss (setq n (+ 1 n))))
      (setq ViewportOnCode ;获得箭头样式
       (Vlax-Get (Vlax-Ename->Vla-Object entname)
         'ArrowheadType
       )
      )
      (if (= 0 ViewportOnCode)   
(progn
    (Vlax-Put-Property
      (Vlax-Ename->Vla-Object entname)
      'ArrowheadType
      3      ;箭头样式
    )

    (Vlax-Put-Property
      (Vlax-Ename->Vla-Object entname)
      'ArrowheadSize
      1      ;箭头的大小
    )

    (Vlax-Put-Property
      (Vlax-Ename->Vla-Object entname)
      'ScaleFactor
      (* 1.5 (getvar "dimscale"));箭头全局比例
    )
)
(progn
    (Vlax-Put-Property
      (Vlax-Ename->Vla-Object entname)
      'ArrowheadType
      0      ;箭头样式
    )
    (Vlax-Put-Property
      (Vlax-Ename->Vla-Object entname)
      'ArrowheadSize
      1      ;箭头的大小
    )

    (Vlax-Put-Property
      (Vlax-Ename->Vla-Object entname)
      'ScaleFactor
      (* 4 (getvar "dimscale"));箭头全局比例
    )
)
      )
    )
)
(princ)
)

以上 代码如何简化,谢谢!

snddd2000 发表于 2013-11-29 15:33:21

(defun c:ddd (/ n ss entname ViewportOnCode obj)
(setq n -1)
(if (setq ss (ssget '((0 . "LEADER"))))
    (while (setq entname (ssname ss (setq n (+ 1 n))))
      (setq ViewportOnCode                ;获得箭头样式
             (Vlax-Get (setq obj (Vlax-Ename->Vla-Object entname))
                     'ArrowheadType
             )
      )
      (if (= 0 ViewportOnCode)
        (progn
          (mapcar 'Vlax-Put-Property
                  (list obj obj obj)
                  (list 'ArrowheadType 'ArrowheadSize 'ScaleFactor)
                  (list 3 1 (* 1.5 (getvar "dimscale")))
          )
        )
        (progn
          (mapcar 'Vlax-Put-Property
                  (list obj obj obj)
                  (list 'ArrowheadType 'ArrowheadSize 'ScaleFactor)
                  (list 0 1 (* 4 (getvar "dimscale")))
          )
        )
      )
    )
)
(princ)
)

smartstar 发表于 2013-11-29 17:11:57

snddd2000 发表于 2013-11-29 15:33 static/image/common/back.gif


谢谢前辈。不过觉得好象还是有点啰嗦,但又不知道怎么优化!

snddd2000 发表于 2013-11-29 17:25:15

(defun c:ddd (/ n ss entname ViewportOnCode obj Tornil)
(setq n -1)
(if (setq ss (ssget '((0 . "LEADER"))))
    (while (setq entname (ssname ss (setq n (+ 1 n))))
      (setq obj                   (Vlax-Ename->Vla-Object entname)
          ViewportOnCode (Vla-Get-ArrowheadType
                             (setq obj (Vlax-Ename->Vla-Object entname))
                           )
          Tornil           (equal 0 ViewportOnCode)
      )
      (mapcar 'Vlax-Put-Property
              (list obj obj obj)
              (list 'ArrowheadType 'ArrowheadSize 'ScaleFactor)
              (list (if        Tornil
                      3
                      0
                  )
                  1
                  (* (if Tornil
                       1.5
                       4
                     )
                     (getvar "dimscale")
                  )
              )
      )
    )
)
(princ)
)
页: [1]
查看完整版本: 这样的程序如何简化?