yshf 发表于 2018-1-11 17:52:44

修改如下可出现不在原位置情况:
;;; Nentsel
;;; function : to nentsel a entity In situ
;;; arg      : string to princ in command-line
;;; return   : a list ( ename point is-of-block? )
;;; Note   : if the ename is of a block , the routine copy a similar entity , so you must entdel it later
;;; by GSLS(SS)
;;;
(defun ss-Nentsel (msg / en en1 pt mat ins mat ent)
(setq en (Nentsel msg))
(if (= (length en) 4)
    (progn
      (setq en1      (car en)
            ang       (cdr (assoc 50 (entget (last en))))
            pt      (cadr en)
            mat      (caddr en)
            ins      (last mat)
            mat      (reverse (cdr (reverse mat)))
            mat      (append
                  (mapcar '(lambda (x y)
                           (append x (list y))
                           )
                        mat
                        ins
                  )
                  '((0. 0. 0. 1.))
                )
            ent      (entget en1 '("*"))
            ent      (vl-remove (assoc -1 ent) ent)
            en1      (entmakex ent)
      )
      (if en1
      (progn
          (setq obj (vlax-ename->vla-object en1))
          (vla-TransformBy obj (vlax-tmatrix mat))
          (vla-Rotate Obj (vlax-3d-point ins) (* 2.0 ang))
          (setq en1 (vlax-vla-object->ename obj))
      )
      )
      (list en1 pt T)
    )
    (append en (list nil))
)
)
页: 1 [2]
查看完整版本: 单选图块在位图元