| 
×
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册 
     [php]
;;本程序用来测试在UCS下生成块实体并插入当前图形
;;可以在UCS或者进行了视图扭转的情况下使用的简单标注
;;本程序用来测试在UCS下生成块实体并插入当前图形
(defun c:test (/ p thisdrawing blocks modelspace blkref blkdef txt)
  (setq        thisdrawing (vla-get-activedocument (vlax-get-acad-object))
        blocks            (vla-get-blocks thisdrawing)
        modelspace  (vla-get-modelspace thisdrawing)
  )
  (vla-startundomark thisdrawing)
  ;;标记UNDO 
  (while (setq p (getpoint "\nPoint: "))
    ;;块一定要定义在原点
    ;;Normal 保证实体在WCS下
    (setq blkdef (vla-add blocks (vlax-3d-point '(0. 0. 0.)) "*U"))
    (vla-put-normal
      (vla-addline
        blkdef
        (vlax-3d-point '(0. 0. 0.))
        (vlax-3d-point '(10. 10. 0.))
      )
      (vlax-3d-point '(0. 0. 1.))
    )
    (vla-put-normal
      (vla-addline
        blkdef
        (vlax-3d-point '(10. 10. 0.))
        (vlax-3d-point '(40. 10. 0.))
      )
      (vlax-3d-point '(0. 0. 1.))
    )
    (vla-put-normal
      (setq txt        (vla-addtext
                  blkdef
                  (strcat "X" (rtos (cadr p) 2 3))
                  (vlax-3d-point '(10. 11. 0.))
                  3.
                )
      )
      (vlax-3d-point '(0. 0. 1.))
    )
    ;;此处处理经过Put-Normal的实体
    (vla-put-insertionpoint
      txt
      (vlax-3d-point '(10. 11. 0.))
    )
    (vla-put-normal
      (setq txt        (vla-addtext
                  blkdef
                  (strcat "Y" (rtos (car p) 2 3))
                  (vlax-3d-point '(10. 6. 0.))
                  3.
                )
      )
      (vlax-3d-point '(0. 0. 1.))
    )
    ;;此处处理经过Put-Normal的实体
    (vla-put-insertionpoint
      txt
      (vlax-3d-point '(10. 6. 0.))
    )
    ;;插入匿名块
    (setq blkref
           (vla-insertblock
             modelspace
             (vlax-3d-point
               (trans p 0 1)
             )
             (vla-get-name blkdef)
             1
             1
             1
             0
           )
    )
    ;;保证Normal
    (vla-put-normal
      blkref
      (vlax-3d-point '(0. 0. 1.))
    )
    ;;此处处理经过Put-Normal的实体
    (vla-put-insertionpoint
      blkref
      (vlax-3d-point
        (trans p 1 0)
      )
    )
    ;;如果视图使用Plan命令进行了扭转
    (if        (not (zerop (getvar "VIEWTWIST")))
      (vla-put-rotation blkref (- (getvar "VIEWTWIST")))
    )
  )
  (princ)
)[/php]
 |