Тема: WCS
Доброго времени суток, у меня такой вопрос:
Как можно узнать и изменить параметры WCS ?
Информационный портал для профессионалов в области САПР
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Форумы CADUser → Программирование → VBA → WCS
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Доброго времени суток, у меня такой вопрос:
Как можно узнать и изменить параметры 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'~
Спасибо, как пользоваться UCS я знаю, а вот как узнать параметры WCS?
Я пока нарыл только переменные АКАДА "UCSXDIR" и "UCSYDIR" :idea:
Спасибо, как пользоваться UCS я знаю, а вот как узнать параметры WCS?
О каких параметрах идет речь? WCS - это универсальная система координат, от которой идет отсчет. UCSXDIR, UCSНDIR, UCSORG - это переменные, которые описывают пользовательскую систему координат (UCS) по отношению к мировой системе координат (WCS).
Видомо вы правы :oops: , на самом деле мне нужно было узнать параметры текущей системы координат(в том числе и мировой) Все оказалось проще чем я думал... ;)
Я решил задачу таким образом:
1. узанаю парметры текущей системы (переменные UCSXDIR, UCSНDIR, UCSORG)
2. создаю ucs с такимиже параметрами как и мировая система и делаю его активным
3. черчу все что мен нужно
4. меняю парметры текущего UCS на ранее взятые из переменных UCSXDIR, UCSНDIR, UCSORG
Спасибо за помощь...
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Форумы CADUser → Программирование → VBA → WCS
Форум работает на PunBB, при поддержке Informer Technologies, Inc