明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2826|回复: 11

删除已命名的当前UCS坐标系的vlisp方法

[复制链接]
发表于 2012-11-5 21:25:13 | 显示全部楼层 |阅读模式
本帖最后由 namezg 于 2012-11-6 20:42 编辑

删除已命名的当前UCS坐标系lisp方法:
(setq currUCSName (getvar "ucsname"))
(if (/= currUCSName "")
        (command "ucs" "na" "d" currUCSName);(command "ucs" "d" currUCSName)
)
我想知道vlisp如何实现此功能。

"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2023-11-28 15:00:37 | 显示全部楼层
;对当前UCS进行命名视为未命名。
(defun CurrentUCS (/ doc tmp)
    (if (null ucsname# ) (setq ucsname# "Unnamed_UCS_"))
      (progn (setq ucsname (getstring (strcat "\n输入ucs名称前缀< " ucsname# " >")))
       (if (= "" ucsname) (setq ucsname ucsname#)  (setq ucsname# ucsname ))
    )
  (setq doc (vla-get-ActiveDocument
              (vlax-get-acad-object)))
   (setq org (getvar "UCSORG"))
   (setq Xpt (trans (list 1 0 0) 1 0))
   (setq Ypt (trans (list 0 1 0) 1 0))
   (setq u (list (- (car Xpt) (car ORg)) (- (cadr Xpt) (cadr ORg)) (- (caddr Xpt) (caddr ORg))))
   (setq v (list (- (car Ypt) (car ORg)) (- (cadr Ypt) (cadr ORg)) (- (caddr Ypt) (caddr ORg))))
   (setq z (v^v u v));; calculate z vector
   (setq Yptp (mapcar '+ org (v^v z u)))
  (vla-put-ActiveUCS doc
    (vla-add (vla-get-usercoordinatesystems doc)
      (vlax-3D-point org)
        (vlax-3D-point Xpt)
          (vlax-3D-point yptp)
             (strcat ucsname  (menucmd "M=$(edtime,$(getvar,date),YY-MO-DD HH:MM)"))
    )
    )
  )
;; 两个矢量的叉积,参数两个矢量,返回值一个矢量.
(defun v^v (v1 v2)
  (list         (- (* (cadr v1) (caddr v2)) (* (caddr v1) (cadr v2)))
         (- (* (caddr v1) (car v2)) (* (car v1) (caddr v2)))
         (- (* (car v1) (cadr v2)) (* (cadr v1) (car v2)))
  )
)
发表于 2023-7-10 00:45:08 | 显示全部楼层
感谢大佬分享~
 楼主| 发表于 2012-11-6 17:08:52 | 显示全部楼层
自己顶一下
发表于 2012-11-8 11:03:26 | 显示全部楼层
在usercoordinatesystems对象里
 楼主| 发表于 2012-11-8 20:52:04 | 显示全部楼层
本帖最后由 namezg 于 2012-11-8 20:52 编辑

在usercoordinatesystems对象里我知道,可是怎么从在usercoordinatesystems里删除呢?
发表于 2012-11-9 12:26:28 | 显示全部楼层

(defun DelUCS (Ucsname)
  (vl-load-com)
  (if (= (getvar "UCSNAME") UcsName)
    (command "_.UCS" "_W")
  )
  (vlax-for Ucs        (vla-get-UserCoordinateSystems
                  (vla-get-ActiveDocument (vlax-get-acad-object))
                )
    (if        (= (vla-get-name Ucs) UcsName)
      (vla-delete Ucs)
    )
  )
)
 楼主| 发表于 2012-11-9 18:51:22 | 显示全部楼层
这样当前坐标系会被删除,而不是改为未命名,我要求的是改为未命名。
发表于 2012-11-10 20:22:45 | 显示全部楼层
(defun DelUCS (Ucsname)
  (vl-load-com)
  (if (= (getvar "UCSNAME") UcsName)
    (command "_.UCS" "_W")
  )
  (vlax-for Ucs        (vla-get-UserCoordinateSystems
                  (vla-get-ActiveDocument (vlax-get-acad-object))
                )
    (if        (= (vla-get-name Ucs) UcsName)
      (vla-delete Ucs)
    )
  )
  (command "_.UCS" "_P")
)
 楼主| 发表于 2012-11-11 12:03:47 | 显示全部楼层
谢谢,不过还不是纯vlisp方法
和我下面的一样
(vl-load-com)
(setq AcadObject(vlax-get-acad-object))
(setq AcadDocument(vla-get-ActiveDocument AcadObject))
(setq UcsSel (vla-get-UserCoordinateSystems AcadDocument))
(setq ucsname "new_ucsname")
(if (not (vl-catch-all-error-p (setq UCSobj (vl-catch-all-apply 'vla-Item (list UcsSel ucsname)))));如果指定UCS坐标系在UCS坐标系统中
        (if (= (vla-get-Name UCSobj) (vlax-invoke AcadDocument 'GetVariable "ucsname"));如果指定UCS坐标系是当前UCS坐标系
                (progn
                        (command "ucs" "w")
                        (vla-Delete UCSobj)
                        (command "ucs" "p")
                )
                (vla-Delete UCSobj)
        )
)
 楼主| 发表于 2012-11-11 12:05:37 | 显示全部楼层
就是不知道(command "ucs" "w") (command "ucs" "p")用vlisp如何表达,看来是办不到的。
发表于 2012-11-11 12:14:19 | 显示全部楼层
Lee Mac has this ....

(defun UCSWorld (/ doc tmp)
  (setq doc (vla-get-ActiveDocument
              (vlax-get-acad-object)))
  
  (vla-put-ActiveUCS doc
    (vla-add (vla-get-usercoordinatesystems doc)
      (vlax-3D-point '(0. 0. 0.))
        (vlax-3D-point '(1. 0. 0.))
          (vlax-3D-point '(0. 1. 0.)) "TempWord_UCS")))
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-17 13:00 , Processed in 0.200306 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表