Keith™ 发表于 2007-1-5 21:06:42

从WCS中提供的点集创建新UCS

好吧…我必须承认我被难住了…
用户协调系统。Add需要4个参数,原点、xAxis法线、yAxis法线和UCS名称…
现在…当我在AutoCAD 2000上使用提供的一组点运行样例代码时,我收到了一个新的ucs…然而,在所有其他版本中,我收到一个错误,即Y轴不平行于Z轴。

Kerry 发表于 2007-1-5 21:22:57

那是#039;因为参数是向量,而不是点。。

Bryco 发表于 2007-1-5 23:08:55

大多数Ucs问题都是由原点引起的。您必须先创建Ucs,然后设置原点。即原点为0,0,0设置ucs;然后更改原点

Kerry 发表于 2007-1-5 23:13:04

这里是#039;如何从VLisp中的2个点计算向量,只需从目标中扣除原点;我把VBA翻译留给你
[代码0;

Bryco 发表于 2007-1-5 23:14:20

比如说:
Dim wcs As AcadUCS
Dim origin(2) As Double, xVector(2) As Double, yVector(2) As Double
origin(0) = 0: origin(1) = 0: origin(2) = 0
xVector(0) = 1: xVector(1) = 0: xVector(2) = 0
yVector(0) = 0: yVector(1) = 1: yVector(2) = 0
Set wcs = ThisDrawing.UserCoordinateSystems.Add(origin, xVector, yVector, "WCS")
是否可以在AutoCAD 2000中使用,但不能在任何更高版本中使用?

Kerry 发表于 2007-1-5 23:41:18

Sub u()
将wcs作为AcadUCS进行调整
将原点(2)调整为Double,将xVector(2)设置为Double,将yVector(1)设置为Double,并将yVector(2)作为Double。将原点(0)设置为5:原点(1)=7:原点(2)=0。设置wcs=ThisDrawing.UserCoordinates系统。添加(原点、X向量、Y向量、“WCS”)
结束Sub
此错误;其中为Chuck#039;s习惯了。

Bryco 发表于 2007-1-5 23:52:08

Bryco,我记得VLisp ActiveX的同一个问题导致了这个问题;;
;;;-------------------------------------------------------------
;;;-------------------------------------------------------------
;;
(defun KDUB:UCS:BlackBox (NewUcsName Origin XAxis YAxis Activate / objUCS)
;;
;;    by Kerry Brown2004.Feb.11
;;    Revised kwb2005.Jul.02
;;    Create a Named UCS and Optionally Activate it.
;|
Required globals                        : g:activedoc, g:ucss
Required dependancies : nil
Parameters:-
      NewUcsName      :
      Origin                  :                  
      XAxis                           :
      YAxis                           :
      Activate                : Set as ActiveUCS

Returns :   or nil.

|;
;;;;----------------
(or NewUcsName (setq NewUcsName "TempUCS"))
(or Origin (setq Origin (getvar "ucsorg")))
(or XAxis (setq XAxis (getvar "ucsxdir")))
(or YAxis (setq YAxis (getvar "ucsydir")))
;;
(setq objUCS (vla-add (kdub:iacaducss)
                        (vlax-3d-point '(0.0 0.0 0.0)) ;origin
                        (vlax-3d-point XAxis)          ;x-axis
                        (vlax-3d-point YAxis)          ;y-axis
                        NewUcsName
               )
)
(vla-put-origin objUCS (vlax-3d-point Origin))
(if Activate
    (vla-put-activeucs (kdub:iacaddocument) objUCS)
)
objUCS
)
;;
;;;-------------------------------------------------------------
;;;------------------------------------------------------------- 引用自

Kerry 发表于 2007-1-6 00:02:30

如果我读对了,原点在最后
克里说'这很有趣,因为我认为这是一个vba问题,也就是说vba有点像你父亲在双打上的表现,但现在你已经证明一切都结束了。

Bryco 发表于 2007-1-6 00:34:28

是的,布莱科,起源在最后;it#039;这是使用ActiveX的一个条件。这就是方法的工作方式;
页: [1]
查看完整版本: 从WCS中提供的点集创建新UCS