Тема: WCS

Доброго времени суток, у меня такой вопрос:
Как можно узнать и изменить параметры WCS ?

Re: WCS

Посмотри для примера

Option Explicit


Sub test_Improved_UCS()
' by Jueergen Menzi
' Create a UCS named "New_UCS" in current drawing
     Dim ucsObj As AcadUCS
     Dim origin As Variant, xAxisPnt As Variant, yAxisPnt As Variant

     ' Define the UCS #1
     origin = ThisDrawing.Utility.GetPoint(, "Enter origin:")
     xAxisPnt = _
     ThisDrawing.Utility.GetPoint(ThisDrawing.Utility.TranslateCoordinates(origin _
                                                                           , acWorld, acUCS, False), "Enter x-Axis Point:")
     yAxisPnt = _
     ThisDrawing.Utility.GetPoint(ThisDrawing.Utility.TranslateCoordinates(origin _
                                                                           , acWorld, acUCS, False), "Enter point in X-Y Plane:")

     ' call the improved ADD function
     Set ucsObj = Add_UCS_improved(origin, xAxisPnt, yAxisPnt, "New_UCS")

     ThisDrawing.ActiveUCS = ucsObj

End Sub


Function Add_UCS_improved(origin As Variant, xAxisPnt _
                                             As Variant, yAxisPnt As Variant, ucsName As String) As AcadUCS
' origin, xAxisPnt, and yAxisPnt must all contain Doubles dimmed (0 to 2)

     Dim ucsObj As AcadUCS
     Dim xAxisVec(0 To 2) As Double
     Dim yAxisVec(0 To 2) As Double
     Dim perpYaxisPnt(0 To 2) As Double
     Dim xCy As Variant, perpYaxisVec As Variant

     xAxisVec(0) = xAxisPnt(0) - origin(0)
     xAxisVec(1) = xAxisPnt(1) - origin(1)
     xAxisVec(2) = xAxisPnt(2) - origin(2)
     yAxisVec(0) = yAxisPnt(0) - origin(0)
     yAxisVec(1) = yAxisPnt(1) - origin(1)
     yAxisVec(2) = yAxisPnt(2) - origin(2)

     xCy = Cross3D(xAxisVec, yAxisVec)
     perpYaxisVec = Cross3D(xCy, xAxisVec)

     perpYaxisPnt(0) = perpYaxisVec(0) + origin(0)
     perpYaxisPnt(1) = perpYaxisVec(1) + origin(1)
     perpYaxisPnt(2) = perpYaxisVec(2) + origin(2)

     Set ucsObj = ThisDrawing.UserCoordinateSystems.Add(origin, xAxisPnt, _
                                                        perpYaxisPnt, ucsName)
     Set Add_UCS_improved = ucsObj

End Function

Function Cross3D(A As Variant, B As Variant) As Variant
' A and B must be dimensioned Double(0 to 2)
     Dim C(0 To 2) As Double
     C(0) = A(1) * B(2) - A(2) * B(1)
     C(1) = -(A(0) * B(2) - A(2) * B(0))
     C(2) = A(0) * B(1) - A(1) * B(0)
     Cross3D = C
End Function

~'J'~

Re: WCS

Спасибо, как пользоваться UCS я знаю, а вот как узнать параметры WCS?
Я пока нарыл только переменные АКАДА "UCSXDIR" и "UCSYDIR" :idea:

(изменено: Александр Ривилис, 26 марта 2009г. 12:35:21)

Re: WCS

Михаил пишет:

Спасибо, как пользоваться UCS я знаю, а вот как узнать параметры WCS?

О каких параметрах идет речь? WCS - это универсальная система координат, от которой идет отсчет. UCSXDIR, UCSНDIR, UCSORG - это переменные, которые описывают пользовательскую систему координат (UCS) по отношению к мировой системе координат (WCS).

Re: WCS

Видомо вы правы  :oops: , на самом деле мне нужно было узнать параметры текущей системы координат(в том числе и мировой) Все оказалось проще чем я думал...  ;)
Я решил задачу таким образом:
1. узанаю парметры текущей системы (переменные UCSXDIR, UCSНDIR, UCSORG)
2. создаю ucs с такимиже параметрами как и мировая система и делаю его активным
3. черчу все что мен нужно
4. меняю парметры текущего UCS на ранее взятые из переменных UCSXDIR, UCSНDIR, UCSORG
Спасибо за помощь...