从WCS中提供的点集创建新UCS
好吧…我必须承认我被难住了…用户协调系统。Add需要4个参数,原点、xAxis法线、yAxis法线和UCS名称…
现在…当我在AutoCAD 2000上使用提供的一组点运行样例代码时,我收到了一个新的ucs…然而,在所有其他版本中,我收到一个错误,即Y轴不平行于Z轴。
那是#039;因为参数是向量,而不是点。。 大多数Ucs问题都是由原点引起的。您必须先创建Ucs,然后设置原点。即原点为0,0,0设置ucs;然后更改原点 这里是#039;如何从VLisp中的2个点计算向量,只需从目标中扣除原点;我把VBA翻译留给你
[代码0; 比如说:
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中使用,但不能在任何更高版本中使用? 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,我记得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
)
;;
;;;-------------------------------------------------------------
;;;------------------------------------------------------------- 引用自 如果我读对了,原点在最后
克里说';这很有趣,因为我认为这是一个vba问题,也就是说vba有点像你父亲在双打上的表现,但现在你已经证明一切都结束了。 是的,布莱科,起源在最后;it#039;这是使用ActiveX的一个条件。这就是方法的工作方式;
页:
[1]