API - TranslateCoordinates bug OCS->WCS [rozwiązany]


JasW

Rekomendowane odpowiedzi

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->WCS
http://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 przez JasW
Odnośnik do komentarza
Udostępnij na innych stronach

  • 2 miesiące temu...

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

Odnośnik do komentarza
Udostępnij na innych stronach

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.

 

Odnośnik do komentarza
Udostępnij na innych stronach

  • dmatusz3 zmienił(a) tytuł na API - TranslateCoordinates bug OCS->WCS [rozwiązany]
  • dmatusz3 zablokował(a) ten temat
Gość
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.