jureko

Użytkownik forum
  • Postów

    20
  • Dołączył

  • Ostatnia wizyta

Odpowiedzi opublikowane przez jureko

  1. Witam

    Konsultowałem tą sprawę z producentami ZWCADa i odpowiedzieli że poprawy format powinien być następujący:

    ssetObj.Select mode, point1, point2, 0, "Text"

    Różnicą jest , że tutaj jest bez nawiasów i tak powinno być. Może też mieć znaczenie że Text jest z dużej litery.

    Ale tu nie chodzi o to że mam problem z formatem polecenia.

    Wcześniej pisałem że jest problem z zamykaniem plików jeżeli łącze się przez OLE z własnego programu (pisze w VS 2008 express). W zwcad 2010 faktyczne zostało to poprawione, ale nie działają inne rzeczy dalej - patrz właśnie filtrowanie zaznaczenia.

    o ile w VBA w samym zwcad działa dobrze i filtruje, to jeżeli chcę to zrobić z zewnątrz to już się nie da, ręce opadają. Spróbuję zrobić wywołanie makra które mi zrzuci potrzebne dane do pliku tekstowego, no ale to już taka proteza...

  2. Proszę te dane filtrów wpisać do tablicy:

    Dim FilterType(0) As Integer

    Dim FilterData(0) As Variant

    FilterType(0) = 0

    FilterData(0) = "Text"

    ssetObj.Select mode, , , FilterType, FilterData

    P.S.

    Pisane z głowy czyli z niczego, mogą być literówki

    Wpisywałem do tablicy, wpisywąłem bezpośrednoi i ciągle wychodzi na to że mam zaznaczone linie. ale może przejrzę sobie czy się coś nei pozmieniało w stosunku do 2008i, bo moze tam jest problem.

  3. Witam

    Sprawdziliśmy ten skrypt i rzeczywiście jest taki problem.

    W wersji 2008 VBA nie było jeszcze dopracowane.

    Dziękuję za sprawdzenie, już w kilku miejscach natrafiłem na podobne problemy...

    Natomiast w wersji 2010 też mam problem - o ile w samym zwcadzie wywołanie komendy w stylu:

     ssetObj.Select(mode, , , 0, "text")
           For i = 0 To ssetObj.Count - 1
               If IsNumeric(ssetObj.Item(i).TextString) Then
                   total = total + ssetObj.Item(i).TextString
                   oZwcad.Activedocument.Utility.Prompt(ssetObj.Item(i).TextString & vbCrLf)
               End If
           Next i

    dziaął poprawnie to przy podłączaniu się przez ole wygląda na to że nie działa filtrowanie - dostaję błąd:

    Public member 'TextString' on type 'IIcadLine' not found.

    Czyli zaznacza linie a miał tylko tekst...

  4. witam,

    w jaki sposób zamykać rysunki i program z VBA? Robię sobie program który podłącza się przez ole , otwiera rysunek ale nie radzi już z zamykaniem..w czym tkwi problem?:

       Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    
    
           Dim oZwcad As ZwCAD.ZwcadApplication
           oZwcad = CreateObject("Zwcad.Application")
           MsgBox("tworze obiekt zwcada")
           oZwcad.Application.Documents.Open("c:\ole.dwg")
           MsgBox("document " & oZwcad.Caption & " is active.")
           oZwcad.Application.Activedocument.Close(False)
           oZwcad.Quit()
    
    
    
    
    
       End Sub
    

    Ciągle wiesza mi się na tym zamykaniu.

    wewnątrz zwcada w vba działa dobrze.

    Acha, chodzi o Zwcad 2008i

  5. witam,

    próbuję połączyc się przez OLE z Openoffice do zwcad. Trochę mam z tym problemów niestety - chciałbym otworzyć każdy plik z katalogu i pobrać z niego potrzebne informacje. Połączenie mi się udało, jakieś próbne wyswietlanie danych z zwcad działa. Natomiast otwieranie plików i robienie w nich czegokolwiek to trochę trudna sprawa dla mnie. Pomógłby mi ktoś z tym tematem?

    Łączę się tak:

    Sub zwConnect  'połaczenie z zwcad
    Dim OleService1 As Object
    Dim zwApp, zwdwg  As Object
    
    OleService1 = createUnoService("com.sun.star.bridge.OleObjectFactory")
    zwApp = OleService1.CreateInstance("Zwcad.application")
    zwApp.Visible = False
    
    MsgBox zwApp.FullName	'to dziala
    zwdwg = zwApp.Documents		
    zwApp.Documents.Open("c:\ole.dwg")
    
    'zwdwg.Close
    'zwApp.Quit
    

    no a w pliku chce zrobić coś w stylu:

    Sub totalnumber()
    
       'define
       Dim total As Double
       total = 0
    
       'Create a set
       Dim ssetObj As ZwcadSelectionSet
       Set ssetObj = Thisdocument.SelectionSets.Add("TEST_SSET")
    
       'use Filters to get text
       Dim Ftype(2) As Integer
       Dim Fdata(2) As Variant
    
       Ftype(0) = 0
       Fdata(0) = "text"
    
       Ftype(1) = 8
       Fdata(1) = "teksty"
    
       Ftype(2) = 62
       Fdata(2) = 4
    
       Dim mode As ZcSelectionSetType
       mode = zcSelectionSetAll
    
       ssetObj.Select zcSelectionSetAll, , , Ftype, Fdata
    
       'Determine the text whether to be digital
       For i = 0 To ssetObj.Count - 1
           If IsNumeric(ssetObj.Item(i).TextString) Then
               total = total + ssetObj.Item(i).TextString
               Activedocument.Utility.Prompt ssetObj.Item(i).TextString & vbCrLf
           End If
       Next i
    
       ' delete set
       ssetObj.Delete
    
       ' output the sum
       Activedocument.Utility.Prompt "suma " & total
    
    End Sub
    

    Pewnei w MSoffice z jego VBasic byłoby mi łatwiej ale akurat używam OOffice...

    --

    pozdrawiam

  6. ssetObj.SelectOnScreen Ftype, Fdata proszę zamienić na :

    ssetObj.Select zcSelectionSetAll Ftype, Fdata

    mam tak:

    Dim mode As ZcSelectionSetType

    mode = zcSelectionSetAll

    ssetObj.Select mode, Ftype, Fdata

    i niestety dalej sa błędy kompilatora, nie wiem co jest grane. Znalazłem tez przed chwila post z lutego w którym był podobny problem, ale 'u mnie nie działa' (:.

    Dołączam przykładowy plik i makro w zipie.

    select.zip

  7. witam,

    przerobiłem sobie makro z przykładów, kod wklejam poniżej. Niestety nie umiem dojść do żebym nie musiał wskazywać oknem elementów (czyli SetAll zamiast selectOnSreen). ciągle mam jakiś błąd. Może mógłby mi ktoś z Was pomóc?

    Sub totalnumber()

    'define

    Dim total As Double

    total = 0

    'Create a set

    Dim ssetObj As ZwcadSelectionSet

    Set ssetObj = Thisdocument.SelectionSets.Add("TEST_SSET")

    'use Filters to get text

    Dim Ftype(2) As Integer

    Dim Fdata(2) As Variant

    Ftype(0) = 0

    Fdata(0) = "text"

    Ftype(1) = 8

    Fdata(1) = "teksty"

    Ftype(2) = 62

    Fdata(2) = 4

    'Dim mode As ZcSelectionSetType

    'mode = zcSelectionSetAll

    ssetObj.SelectOnScreen Ftype, Fdata

    'Determine the text whether to be digital

    For i = 0 To ssetObj.Count - 1

    If IsNumeric(ssetObj.Item(i).TextString) Then

    total = total + ssetObj.Item(i).TextString

    Activedocument.Utility.Prompt ssetObj.Item(i).TextString & vbCrLf

    End If

    Next i

    ' delete set

    ssetObj.Delete

    ' output the sum

    Activedocument.Utility.Prompt "suma " & total

    End Sub

  8. witam,

    mam problem z pamiętaniem ustawień arkusza przy przenoszeniu rys. miedzy academ(2008lt) i zwcadem(2008i). Zrobiłem ploter o tej samej nazwie, papier nazywa się tez tak samo, ale niestety otwierając plik zapisany w innym prog. nie są pamiętane ustawienia do wydruku. Czy ten problem jest zanny czy występuje tylko u mnie, ew. jak sobie z tym poradzić?

    --

    jureko