scry_wxj 发表于 2011-6-4 13:13:15

求LISP下调整对象前置与后置的函数

求LISP下调整对象前置与后置的函数,谢谢。

LLXXZZ 发表于 2011-6-4 13:28:37

(defun c:ff    (/ b) (setq b(ssget))(command "draworder" b "" "f" )(prin1))
(defun c:bb    (/ b) (setq b(ssget))(command "draworder" b "" "b" )(prin1))

scry_wxj 发表于 2011-6-4 14:41:36

回复 LLXXZZ 的帖子

谢谢,这个我知道,我不想调入命令的方式处理,速度太慢。不过还得谢谢你。

if 发表于 2011-6-4 14:59:07

vla-MoveToTop
vla-MoveToBottom

Gu_xl 发表于 2011-6-4 16:04:30

回复 scry_wxj 的帖子


;;;移到最上显示 By Gu_xl示例: (MovetoTop (ssget))
(defun MovetoTop (ss / ObjLst Sortents dict i)
(cond        ((= 'pickset (type ss))
       (repeat (setq i (sslength ss))
           (setq ObjLst        (cons (vlax-ename->vla-object
                                (ssname ss (setq i (1- i)))
                              ) ;_ vlax-ename->vla-object
                              ObjLst
                        ) ;_ cons
           ) ;_ setq
       ) ;_ repeat
        )
        ((= 'ename (type ss))
       (setq ObjLst (list (vlax-ename->vla-object ss)))
        )
        ((= 'vla-object (type ss)) (setq ObjLst (list ss)))
) ;_ cond
(if
    (cond
      ((not
       (VL-CATCH-ALL-ERROR-P
           (setq Sortents
                  (VL-CATCH-ALL-APPLY
                  'vla-item
                  (list
                      (setq dict
                             (vla-GetExtensionDictionary
                             (vla-ObjectIDtoObject
                               (vla-get-ActiveDocument (vlax-get-acad-object))
                               (vla-get-OwnerID (car ObjLst))
                             ) ;_ vla-ObjectIDtoObject
                             ) ;_ vla-GetExtensionDictionary
                      ) ;_ setq
                      "ACAD_SORTENTS"
                  ) ;_ list
                  ) ;_ GXL-CATCHAPPLY
           ) ;_ setq
       ) ;_ VL-CATCH-ALL-ERROR-P
       ) ;_ not
      )
      ((not
       (VL-CATCH-ALL-ERROR-P
           (setq Sortents
                  (VL-CATCH-ALL-APPLY
                  'vla-AddObject
                  (list dict "ACAD_SORTENTS" "AcDbSortentsTable")
                  ) ;_ GXL-CATCHAPPLY
           ) ;_ setq
       ) ;_ VL-CATCH-ALL-ERROR-P
       ) ;_ not
      )
    ) ;_ cond
   (not (vla-MovetoTop
          Sortents
          (vlax-make-variant
              (vlax-safearray-fill
                (vlax-make-safearray
                  vlax-vbobject
                  (cons 0 (1- (length ObjLst)))
                ) ;_ vlax-make-safearray
                ObjLst
              ) ;_ vlax-safearray-fill
          ) ;_ vlax-make-variant
          ) ;_ vla-MovetoTop
   ) ;_ not
) ;_ if
) ;_ defun

e688w 发表于 2011-6-4 16:41:42

感觉调用命令的方式很简单哦!

669423907 发表于 2011-6-5 15:33:50

回复 LLXXZZ 的帖子

能否做到只用一个命令,在选择对象后,按一下就前置,再按一下就后置呢?这样就更完美了。

jfxia 发表于 2011-6-6 14:54:23

    完美的要等大侠来了

khaki168 发表于 2011-6-9 13:34:04

同求,。。。现身吧,大侠,呵呵

l64631778 发表于 2011-7-24 19:06:02

回复 LLXXZZ 的帖子

谢谢分享,很是感激~~~~
页: [1]
查看完整版本: 求LISP下调整对象前置与后置的函数