VisualBasic i przenoszenie programów z AutoCada


McArti
 Share

Recommended Posts

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?

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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: :)

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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"

Link to comment
Share on other sites

drobiazg :-)

wysłałem makro do supportu.

Myślą tam nad nim. :-)

Napiszę im o tej literówce i problemie z SelectionSet.

A tak na marginesie to otrzymałem listing makra do obliczania pola powierzchni wskazanego elementu.

Jakby się przydał to mogę wkleić. :?:

Pozdrawiam

Link to comment
Share on other sites

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Ł

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
 Share