vbamania.pl
login:
hasło:
 
  *Rejestracja *Zapomniane hasło
 Dziś jest czwartek, 02 maja 2024 roku.
Ustaw jako stronę startową Ulubione Napisz
PowrótPowrót do serwisu  RegulaminRegulamin rssRSS

  tytuł wątku:
Wątki dyskusji

[autocad]sprawdzenie czy w pliku jest zapisany blok, zczytanie o nim informacji, operacje na bloku bez otwierania rysunku tylko za pomocą funkcji open - proszę o pomoc jak to zrobić?


otwartyotwarty rozpoczął: asterix postów: 4



napisał: admin
postów: 613


umieszczony:
7 marca 2008
05:22

edytowany:
7 marca 2008
05:27

  
Cytat:
nie potrzebuje otwierać obiektów pod samym cadem, ponieważ raz że to czasochłone, dwa że komp tego nie przerobi z taką szybkością jak bym chciał, trzy potrzeba mi wyciągnąć tylko niezbędne dla mnie informacje a następnie wpisać je do przygotowanej już wcześniej bazy, czasem tylko coś zmodyfikować w bloku; ponieważ plików jest coraz więcej a nie pamiętam czy wszystkie przerobiłem na bloki to z tąd chęć sprawdzenia czy on nim jest; jak bym miał otwierać i zamykać każdy plik z osobna w cadzie to nie ma problemu, odczytam sobie wszystko co chce czy to za pomocą visual lispa czy vba;
jeżeli nie da się działać w taki sposób na zamkniętym pliku to czy ktoś zna jakiś sposób?

mi do głowy przychodzi jeszcze jeden operacje na pliku .dxf jednak nie znam niestety jego struktury i tutaj jest problem co jest jak zapisane:( dlatego tego rozwiązania chciałbym uniknąć jeżeli to mozliwe


Żeby operować na danych zawartych w pliku dwg w ten sposób musisz tak naprawdę napisać program (w VBA bo o tym języku traktuje to forum), który będzie miał funkcjonalność AutoCADa (przynajmniej w zakresie operacji na blokach).
Można by się było pokusić o edycję danych pliku DXF, ale do tego należy niestety znać strukturę pliku DXF.
Pamiętaj, że wcześniej pliki DWG musisz przekonwertować na DXF, a to też trwa. No i analiza pliku DXF też będzie trwała. Sam też piszesz, że chcesz uniknąć tego sposobu. Nie, nie tędy droga. Asteriksie, nie idź w tę stronę!;)

Możesz także spróbować tu: http://www.drdwg.com/cadlibrary/index.html
Nie sądzę, by było to narzędzie zdecydowanie szybsze niż AutoCAD.

Jedyne rozsądne rozwiązanie: Otwieranie pliku z poziomu VBA (lub LISP czy VLISP) i operowania na nim w ten właśnie sposób.

Pozdrawiam
napisał: asterix
postów: 16


umieszczony:
7 marca 2008
00:46

  
nie potrzebuje otwierać obiektów pod samym cadem, ponieważ raz że to czasochłone, dwa że komp tego nie przerobi z taką szybkością jak bym chciał, trzy potrzeba mi wyciągnąć tylko niezbędne dla mnie informacje a następnie wpisać je do przygotowanej już wcześniej bazy, czasem tylko coś zmodyfikować w bloku; ponieważ plików jest coraz więcej a nie pamiętam czy wszystkie przerobiłem na bloki to z tąd chęć sprawdzenia czy on nim jest; jak bym miał otwierać i zamykać każdy plik z osobna w cadzie to nie ma problemu, odczytam sobie wszystko co chce czy to za pomocą visual lispa czy vba;
jeżeli nie da się działać w taki sposób na zamkniętym pliku to czy ktoś zna jakiś sposób?

mi do głowy przychodzi jeszcze jeden operacje na pliku .dxf jednak nie znam niestety jego struktury i tutaj jest problem co jest jak zapisane:( dlatego tego rozwiązania chciałbym uniknąć jeżeli to mozliwe
napisał: admin
postów: 613


umieszczony:
6 marca 2008
22:43

  
Cytat:
tak jak w temacie

chciałbym z poziomu kodu vba otworzyć plik powiedzmy o nazwie test.dwg, następnie sprawdzić czy jest tam zapisany blok, uzyskać o nim informacje a także móc go zmodyfikować np nadać mu inny kolor, atrybut... jednak nie chce otwierać pliku w autocadzie bo mi to nie potrzebne
moze ktoś pomóc z góry dzięki

narazie jedynie co potrafie zrobić to coś takiego:
Sub OtworzPlik(nazwa As String)

Dim sdir As String
Dim numer As Integer

numer = FreeFile() ' nie wiem czy dobrze to stosuje

lancz_db

   If sdir = Fpobierz("select test_name from [test] where test_name =" & nazwa & "") Then
    'jeżeli plik istnieje w bazie danych to jest on otwierany po przez odwołanie do bazy

       Open sdir For Binary As numer

  Else
    jeżeli nie istnieje w bazie to daje odpowiedni komunikat
 
   MsgBox "plik nie znajduje się w bazie"
     Open nazwa For Binary As numer
   End If
    

End Sub



niestety dalej nie wiem co robić z tak otwartym plikiem



Z tak otwartym plikiem nie da się nic zrobić.

Jeśli chcesz mieć dostęp do danych bloku, do jego atrybutów poprzez ActiveX (bo poprzez ActiveX AutoCAD udostępnia swoje obiekty dla VBA) musisz otworzyć plik w Autocadzie. Uwierz mi - jest to Ci potrzebne.
Nie rozumiem jednak czemu boisz się otwarcia pliku w AutoCadzie?
napisał: asterix
postów: 16


umieszczony:
6 marca 2008
22:19

  
tak jak w temacie

chciałbym z poziomu kodu vba otworzyć plik powiedzmy o nazwie test.dwg, następnie sprawdzić czy jest tam zapisany blok, uzyskać o nim informacje a także móc go zmodyfikować np nadać mu inny kolor, atrybut... jednak nie chce otwierać pliku w autocadzie bo mi to nie potrzebne
moze ktoś pomóc z góry dzięki

narazie jedynie co potrafie zrobić to coś takiego:
Sub OtworzPlik(nazwa As String)

Dim sdir As String
Dim numer As Integer

numer = FreeFile() ' nie wiem czy dobrze to stosuje

lancz_db

   If sdir = Fpobierz("select test_name from [test] where test_name =" & nazwa & "") Then
    'jeżeli plik istnieje w bazie danych to jest on otwierany po przez odwołanie do bazy

       Open sdir For Binary As numer

  Else
    jeżeli nie istnieje w bazie to daje odpowiedni komunikat
 
   MsgBox "plik nie znajduje się w bazie"
     Open nazwa For Binary As numer
   End If
    

End Sub



niestety dalej nie wiem co robić z tak otwartym plikiem


<-wstecz  1  dalej->
wszystkich stron: 1


Sortuj posty: z