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
|