JasW Opublikowano 31 Lipca 2017 Zgłoś Opublikowano 31 Lipca 2017 (edytowane) Zwcad 2017 już się ostatecznie ukształtował Ponieważ jednak nadzieja umiera ostatnia, iIdąc za strategią kolegi Martina odświeżam info o bugu zgłaszanym chińczykom w marcu .b.r. : Bug w VBA / COM api : Translate Coordinates OCS->WCShttp://www.zwsoft.com/zwcad_forum/thread-4808-1-1.html > The bug ID is T13536, we will fix it ASAP Jest "Szansa" (nomen omen), że ASAP to będzie w ZWCAD 2018 ? Pozdrawiam, J. -*- Script for diagnoze problem : ZWCAD 2017 return 3 ,1 , 1.5 Should -3.0,1.0,-1.5 Sub TestTranslateCoordinates() ' Create a polyline in model space. Dim plineObj As ZcadPolyline Dim points(0 To 14) As Double ' Define the 2D polyline points points(0) = 3: points(1) = 1: points(2) = 1 points(3) = 0: points(4) = 2: points(5) = 1 points(6) = 0: points(7) = 2: points(8) = 2 points(9) = 0: points(10) = 2: points(11) = 3 points(12) = 0: points(13) = 4: points(14) = 4 ' Create a light weight Polyline object in model space Set plineObj = ThisDrawing.ModelSpace.AddPolyline(points) plineObj.Elevation = 1.5 ' Find the X and Y coordinates of the ' first vertex of the polyline Dim firstVertex As Variant firstVertex = plineObj.Coordinate(0) ' Find the Z coordinate for the polyline ' using the elevation property firstVertex(2) = plineObj.Elevation ' Change the normal for the pline so that the ' difference between the coordinate systems ' is obvious. Dim plineNormal(0 To 2) As Double plineNormal(0) = 0# plineNormal(1) = 0# plineNormal(2) = -1# plineObj.Normal = plineNormal ' Translate the OCS coordinate into WCS Dim coordinateWCS As Variant coordinateWCS = ThisDrawing.Utility.TranslateCoordinates _ (firstVertex, acOCS, acWorld, 1, plineNormal) ' Display the coordinates of the point MsgBox "The first vertex has the following coordinates:" & vbCrLf & _ "OCS: " & firstVertex(0) & ", " & firstVertex(1) & " + Elevation:" & firstVertex(2) & vbCrLf & _ "PlaneNormal: " & plineNormal(0) & ", " & plineNormal(1) & ", " & plineNormal(2) & vbCrLf & _ "OCS->WCS: " & coordinateWCS(0) & ", " & coordinateWCS(1) & ", " & coordinateWCS(2) End Sub Edytowane 31 Lipca 2017 przez JasW
dmatusz3 Opublikowano 31 Lipca 2017 Zgłoś Opublikowano 31 Lipca 2017 Sprawdzimy status tego zgłoszenia jutro, nie potrafię teraz niestety nic powiedzieć.
kruszynski Opublikowano 11 Października 2017 Zgłoś Opublikowano 11 Października 2017 Właśnie otrzymałem odpowiedź z ZWSOFT w tej sprawie. Proszę zmienić acOCS, acWorld na zcOCS, zcWorld Z przeprowadzonego przeze mnie testu wynika że efekt jest zgodny ze spodziewanym. Proszę sprawdzić czy to jest OK. Sprawdzałem to na wersji 2018: vernum: 2017.09.18(21849)_x64
JasW Opublikowano 11 Października 2017 Autor Zgłoś Opublikowano 11 Października 2017 Witam, Na ZWCAD 2018 vernum 21849 POL sprawdzone i po korekcie acOCS na zcOCS i zadziałało!. Poprawny wynik po translacji to punkt [ -3,1,-1.5 ] Trochę mnie zaskoczyło, że rozwiązanie wyglądało na banalne. Jednak po sprawdzeniu na starszym ZWCAD 2017 vernum 18776 ENG bug był i to conajmniej jeden: m.inn VBA nie znał stałej zcOCS ( = 4) stąd kompilator nie zgłosił błędu z powodu ( stała acOCS otrzyma wtedy wartoiśc =0. Aby ten problem wykryć przed kompilacja trzeba by dodać deklarację na początku kodu: Option Explicit ' Wymusza jawną deklarację zmiennej z typem przed pierwszym użyciem Podsumowując: Od ZwCAD 2018 można już używać w VBA TranslateCoordinates do np: konwersji polilinii 2D na 3D Dziękuję za informację i pozdrawiam, J.
dmatusz3 Opublikowano 12 Października 2017 Zgłoś Opublikowano 12 Października 2017 Dziękuję za informację, zamykam temat. Pozdrawiam
Rekomendowane odpowiedzi