Mam dane techniczne pochodzące z mniej lub bardziej skomplikowanych konstrukcji.
Regularnie potrzebuję konturów z danych konstrukcyjnych, aby wykonywać na nich obliczenia geometryczne. Dane konstrukcyjne pochodzą z różnych pakietów CAD (np. Inventor lub SolidWorks). Zasadniczo potrzebuję pewnych zamkniętych wielokątów przechowywanych w sposób, który mogę odczytać za pomocą prymitywnych metod, takich jak źle zaprojektowane programy PERL.
Edycja: Wieloboki są płaskie. To znaczy dane, które chcę przetwarzać, to 2D. Zasadniczo często jest to obrys obiektu 3D, np. Obudowy.
Tak więc moim ulubionym formatem wejściowym dla takich wyodrębnionych danych wielokąta jest plik CSV lub zwykły tekst z wszelkimi dostępnymi separatorami.
Ponieważ większość CAD-SW może importować modele 3D zapisane w STEP, praktycznie mogę wybrać oprogramowanie, którego używam do zapisania danych wielokąta. Rezultat jest taki, że prawdopodobnie skończę na plikach DXF lub DWG, które są najbardziej prymitywnymi plikami CAD, jakie mogę z tego uzyskać.
To pozostawia mnie z wyciąganiem moich wielokątów z tego cholernego DXF do pliku CSV. Czy ktoś ma (najlepiej) łatwy sposób, aby to zrobić?
Dodatek: Dla większego wyjaśnienia opisuję swoje zadanie. Muszę zaprojektować płytki drukowane, które ładnie pasują do obudów o dziwnych kształtach. Podczas gdy mój EDA-sw wykazuje dość przydatną procedurę importowania danych DXF, mój autoprogramujący autoplacer nie. Tak więc w moim pliku EDA mogę mieć ładny zarys, ale to nie pomaga mi w umieszczeniu komponentów wewnątrz tego wielokąta. Dlatego potrzebuję danych wielokąta osobno w moim autoplacerze.
Odpowiedzi:
Wygląda na to, że interesuje Cię płaski wycinek modelu CAD. Możesz użyć pliku 3D i pokroić go sam, co wydaje się nieco przesadne, ponieważ aplikacja CAD jest w stanie wykonać plasterki za Ciebie.
szybko i brudno
Ok, więc każdy CAD posiada tryb rysowania 2D, które można zapisać jako rysunek
dxf
albopdf
oba są łatwe do analizowania. Jeśli nie uda Ci się znaleźć dobrego narzędzia do tego, zmień topdf
w,svg
które może być łatwiejsze do przeanalizowania. Takie podejście można również wykonać szybko i brudno, wykorzystując takie narzędzia, jak Inkscape lub Illustrator. Zróbmy przykład, ponieważ jest to łatwe:Obraz 1 : Szybki i brudny rysunek eksportu jako
pdf
/svg
następnie izoluj i odczytuj punkty z tego pliku, którego użyłem zmodyfikowanej wersji tego narzędzia, aby zrzucić współrzędnepdf
. Powinieneś być w stanie łatwo to zrobić w Perlu. dane dostępne tutajWłaściwa metoda
Możliwe jest uzyskanie dostępu zarówno do SolidWorks, jak i Inventor poprzez most COM, dzięki czemu można uzyskać dostęp do modelu danych aplikacji CAD bezpośrednio z kodu Perla. Ma to kilka zalet, ale w większości nie wymaga analizowania plików pośrednich. Możesz wybrać odpowiednie krawędzie i po prostu przejść je bezpośrednio z CAD. Teraz mam tylko dostęp do SolidWorks w pracy, ale podobne podejście działa w programie wynalazczym, tak jak to zrobiłem.
Miałem trochę czasu w pracy, aby zrobić szybki
VBA
kod dla SolidWorks. Kod pobiera wszystkie linie zamkniętego szkicu, sortuje je w kolejności wielokątów (z naiwnym algorytmem N ^ 2) i drukuje je wVBA
konsoli debugowania.Ponieważ vba wywołuje COM, możesz użyć dowolnego kodu, na przykład perl implementuje Win32 :: OLE, który może wykonać to zadanie.
Rysunek 2 : Przykład części prostych wyników jednej pętli w szkicu tego wyjścia
Epilog
Jeśli naprawdę chcesz wyeksportować dane wielokąta 3D i wykonać cięcie ręczne, wyeksportuję OBJ lub STL. Byłoby to jednak znacznie niższe na mojej liście podejść, głównie dlatego, że wszystkie inne podejścia są prostsze.
źródło