VisualBasic i przenoszenie programów z AutoCada


McArti

Rekomendowane odpowiedzi

radość i rozczarowanie :P

VB jest i działa. Składnia obiektu prawie taka sama ALE...

niestety parametry punktu procedurom przekazuje sie przez obiekt punktu ZwcadPoint a nie przez tablice jak w AutoCADzie.

Niewiem dlaczego zostało to tak rozwiązane. Licencja Autodesku? Zablokowało to automatyczne przekładanie makr z AutoCada.

troche włosów z głowy wyrwałem no ale trzeba programy przerabiac i tyle.

Moje pytania są takie:

Jak należy uzywać tych punktów czy wszystkie punkty musza nalezeć do kolekcji ZwcadPoints czy mogą istnieć osobno?

Jak poza kolekcja wytworzyć obiekt ZwcadPoint?

Czy po wykonianiu AddLine można legalnie wywalić z kolekcji punkty na podstawie, których została stworzona linia?

Jakie jest wogóle znaczenie tej kolekcji w Objekcie ZwCAD???

Czy gdzieś mozna znaleźc example do Zwcad VB?

Odnośnik do komentarza
Udostępnij na innych stronach

Witam,

postaram się ściągnąć przykładowy skrypt w VB, i wkleić go tutaj.

Z tego co wiem:

1. thisdrawing w AC odpowiada thisdocument w ZW

2 acad musi być zmienione na zwcad, np:

AutoCAD ZwCAD

acadLine ----- zwcadLine

acadArc ------ zwcadArc

AcHatchStyle ----- - ZcHatchStyle

AcHatchStyleIgnore -------zcHatchStyleIgnore

AcHatchStyleNormal-------zcHatchStyleNormal

AcHatchStyleOuter--------zcHatchStyleOuter

Pozdrawiam

Dariusz Matuszek

Odnośnik do komentarza
Udostępnij na innych stronach

Zdobyłem taki mały skrypcik:

Sub Circle200()

Dim pt As New ZwcadPoint

Dim Circleobj As ZwcadCircle

pt(0) = 100: pt(1) = 100: pt(2) = 0

For i = 0 To 199

Set Circleobj = Thisdocument.ModelSpace.AddCircle(pt, i * 2)

Circleobj.Update

Next i

Thisdocument.Regen

Thisdocument.ActiveViewport.ZoomAll

End Sub

Pozdrawiam

Dariusz Matuszek

Odnośnik do komentarza
Udostępnij na innych stronach

Zdobyłem taki mały skrypcik:

Dim pt As New ZwcadPoint

pt(0) = 100: pt(1) = 100: pt(2) = 0

Pozdrawiam

Dariusz Matuszek

WIELKIE DZIEKI!!!!!!!!

to dość dla mnie sensacyjne odkrycie, że obiekt ZwcadPoint indeksuje jako tablica!

czyli własciwie poza deklaracją zmiennych nic sie nie zmienia w stosunku do AutoCADa no REWELACJA :shock: :)

Odnośnik do komentarza
Udostępnij na innych stronach

no niestety nie jest tak rózowo jednak wiele metod obiektów zmienia swoja składnię z tablic na obiekty co pociaga za saobą sporo perturbacji.

mam prosbe do admina o prawidłową składnie:

AddItems w clasie ZwcadSelectionSet. browser pisze, że to ma być:

Sub AddItems(ArrayOfEntities)

najlepiej jakby admin pokazał jak sie haczuje:

poniższa procedura sie wykrzacza własnie na AddItems

Sub haczowanie()
Dim tpline As New ZwcadPoints
Dim thaczouter(0 To 0) As ZwcadLWPolyline
           Dim ZwSelSet As ZwcadSelectionSet
           Dim SeedPoints As New ZwcadPoints

           tpline.Add 0, 0, 0
           tpline.Add 5, 0, 0
           tpline.Add 5, 10, 0
           tpline.Add 0, 10, 0
           ZwCAD.Documents.Add "zwcadiso.dwt"
           Set thaczouter(0) = Thisdocument.ModelSpace.AddLightWeightPolyline(tpline)
           thaczouter(0).Closed = True
           Set hacz = Thisdocument.ModelSpace.AddHatch(0, "CONC", True)

           Set ZwlSelSet = Thisdocument.SelectionSets.Add("d")

           ZwSelSet.AddItems thaczouter

           SeedPoints.Add 0, 0, 0
           hacz.ApplyHatch ZwSelSet, SeedPoints

           ZwSelSet.Erase
           SeedPoints.RemoveAll

End Sub

Odnośnik do komentarza
Udostępnij na innych stronach

przepraszam najmocniej :P

macro które napisałem działa dobrze tylko występuje jedna literówka!

Set Zw...l....SelSet = Thisdocument.SelectionSets.Add("d")

to "l" zawiniło

ps. jednak zgłaszam błąd działania obiektu SelectionSet. Name zawiera tylko jedną literę z nadanej pierwotnie nazwy.

wykonanie poniższego makra pokazuje błąd:

Sub NazwaSelekcji()
MsgBox Thisdocument.SelectionSets.Add("asdfgh").Name
End Sub

okienko powinno wyswietlić "asdfg" a pokazuje tylko "a"

Odnośnik do komentarza
Udostępnij na innych stronach

Witam,

wklejam go, choć przyznam, że nie testowałem go czy działa.

:oops:

Ale nawet gdyby, to i tak jest dużo elementów które można przeanalizować.

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

'Calculate the Area of selected-Entity

'

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

Public Sub cArea()

On Error GoTo ErrorHandler

' Define

Dim PtObj As New ZwcadPoint

Dim strPt As String

Dim i As Integer

Dim dblArea As Double

dblArea = 0

' Get Num of Entity in the ModelSpace

Dim lngCount As Long

lngCount = Thisdocument.ModelSpace.Count

'Get the current object types of the created borders (0 is RegionŁ

Odnośnik do komentarza
Udostępnij na innych stronach

Gość
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.