McArti Posted March 4, 2008 Report Share Posted March 4, 2008 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 More sharing options...
McArti Posted March 4, 2008 Author Report Share Posted March 4, 2008 to sobie narazie sam odpowiem :wink: wystarczy postawić goły obiekt: Dim punkt As New ZwcadPoint potem juz można np. punkt.x=2 punkt.y=1 punkt.z=0 Thisdocument.ModelSpace.AddPointEntity punkt Link to comment Share on other sites More sharing options...
dmatusz3 Posted March 4, 2008 Report Share Posted March 4, 2008 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 More sharing options...
dmatusz3 Posted March 5, 2008 Report Share Posted March 5, 2008 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 More sharing options...
McArti Posted March 5, 2008 Author Report Share Posted March 5, 2008 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 More sharing options...
McArti Posted March 8, 2008 Author Report Share Posted March 8, 2008 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 More sharing options...
dmatusz3 Posted March 10, 2008 Report Share Posted March 10, 2008 postaram się we wtorek coś wkleić. Pozdrawiam Dariusz Matuszek Link to comment Share on other sites More sharing options...
McArti Posted March 12, 2008 Author Report Share Posted March 12, 2008 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 More sharing options...
dmatusz3 Posted March 12, 2008 Report Share Posted March 12, 2008 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 More sharing options...
McArti Posted March 13, 2008 Author Report Share Posted March 13, 2008 najbardziej to niech mysla nad Xrefami drzewiastymi. ja licze na jakąś nowa kompilacje ;) w tym wzgledzie, bo tak zostać nie może. Link to comment Share on other sites More sharing options...
angelixx Posted March 13, 2008 Report Share Posted March 13, 2008 ja chętnie reflektuję na obliczanie powierzchni :D Link to comment Share on other sites More sharing options...
droem Posted March 17, 2008 Report Share Posted March 17, 2008 ja chętnie reflektuję na obliczanie powierzchni :D Witam wszystkich. I ja też reflektuję :) Link to comment Share on other sites More sharing options...
dmatusz3 Posted March 17, 2008 Report Share Posted March 17, 2008 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 More sharing options...
banseno Posted March 20, 2008 Report Share Posted March 20, 2008 Jakie powierzchnie chcemy liczyc i w jaki sposób, to może cos poradzę? Link to comment Share on other sites More sharing options...
Recommended Posts