| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > DXF to LISP

DXF to LISP

Ответ
Поиск в этой теме
Непрочитано 22.02.2004, 01:28 #1
DXF to LISP
John
 
Регистрация: 28.01.2004
Сообщений: 2

Сразу скажу что подобную тему уже читал.
Но хотелось бы поднять этот вопрос еще раз, так в прошлой теме толкового ответа не наблюдаеться, по причине...так сказать не понимания .

Постараюсь сформулирую вопрос по корректнее:
Существует ли програмне пакеты или модули к чему либо ,позволяющие конвертировать DXF файлы (т.е. набор объектов - линий, многоугольников, штриховок, текста), в LISP файлы (т.е. набор комманд которые в итоге в AutoCAD-е и вычерчат те самые линии, многоугольники, штриховки ...).

Заранее спасибо.
(p.s. самому писать не охота)
Просмотров: 6372
 
Непрочитано 22.02.2004, 04:00
#2
Startrek

AutoCAD/AutoLISP
 
Регистрация: 27.08.2003
Seattle/USA
Сообщений: 1,133


Вы путаете уважаемый. Это совершенно разные вещи. DXF не надо ни во что преобразовывать.
Прямо в АКАДе DXFIN и все. Или даже просто открыть в АКАДе как открываете обычный чертеж. Не нужны никакие дополнительные программы. DXF - это и есть чертеж в форме техтового фaйла, если уж вам так приспичело его можно открыть и просмотреть в NOTEPAD.
Другое дело что AutoLISP можно использовать для построения довольно сложных чертежей, к примеру ШВЕЛЕРОВ, БАЛОК и т.д.
Startrek вне форума  
 
Непрочитано 22.02.2004, 10:51
#3
Perezz!!
Moderator

архитектор
 
Регистрация: 21.08.2003
Москва
Сообщений: 3,587


Startrek ->
Мне кажется, всё-тки Джон спрашивает нет ли такой программы, которая бы писала другую программу для отрисовки примитивов, на основе конечного результата её работы, коим являются уже готовые примитивы из файла .dxf.

John ->
Цитата:
(p.s. самому писать не охота)
1. Джон, метод обратного инжиниринга, о котором идёт речь - вообще, по сути своей, не самый простой способ создания некоего конечного продукта.
2. Опираясь на свои немногочисленные знания в программировании могу сказать Вам что это (см. цитату) вряд ли возможно. Лисп - язык программирования высокого уровня - объектно-ориентированный. Для автоматического создания некоей последовательности комманд в Лиспе, необходима программа на другом языке - более низкого уровня. Я не знаю на чём написан сам Лисп, но очевидно, что Вы должны в совершенстве знать этот язык, знать языки машинных кодов (ассемблер и т. п.), понимать принципы создания программных модулей, владеть навыками написания объектно-ориентированных программ.
3. Давайте посмотрим на саму задачу. Перед нами стоит вопрос не просто распознавания готовых графических примитивов /для этого уже созданы программные пакеты, которые однако работают не идеально, по той же самой причине о которой мы говорим/, а дополнительно их тщательный анализ, возможно какое-то предварительное форматирование и выборка, анализ доступных средств Автолиспа для создания последовательности этих фигур, и собственно написание самого кода, который бы автоматически "обводил" эти фигуры, причём без вмешательства человека-оператора.
В целом - типичная проблема при создании робототехники: анализ входящих данных, оценка и реагирование на них машиной, плюс возможно обучение машины. И что же? Ведь полноценных роботов с полностью искусственным интеллектом сейчас нет (есть только намёки на Al, которые изначально запрограммированы на совершение неких операций с небольшим самообучением) - проблема не решена до сих пор, несмотря на то, что работают над дней тысячи учёных по всему миру, в течение последних десятилетий.

И вот John, тут появляетесь Вы, и говорите что у Вас просто нет времени для создания этой программы. Ну что же?! Сообщите нам сюда обязательно, когда напишите её! [sm1006]
Perezz!! вне форума  
 
Непрочитано 22.02.2004, 11:09
#4


 
Сообщений: n/a


Ну вот, опять .
Такс...давай те еще раз.

Вопервых сразу хочу уточнить, что синтаксис и комманды LISP-а я низнаю, но предпологаю что в нем есть комманду рисования линий, (как она выглядит я низнаю), предположим что она выглядит следующим образом:

draw_line(x1,y1,z1,x2,y2,z2);

так вот задача в следующем:

есть dxf файл, в котом "нарисованно" 50 линий, программа должна "взять" все эти линии и "расписать" их через комманды LISP-а:

draw_line(10,20,0,100,20,0); //первая линия, из dxf-файла
draw_line(15,20,0,100,25,0); //вторая линия, из dxf-файла
и т.д.

тоже самое и для других примитивов: текст, кружки, штриховки ....

Полностью готовую программу на LISP-е мне и не нужно, мне просто нужны "расписанные" примитивы.

Startrek: я знаю что DXF файл открываеться в AutoCAD-е, но я поставил конкретную задачу, и прошу прощения за грубость, но если вы не можите ничем помочь не надо постить всякую туфту.

Что касаеться высказывания, Perezz!!, я вас прекрасно понимаю, но я же не требую, программу которая, по рисунку самолета в dxf файле, научилась его рисовать с других сторон в lisp-е

P.S.Для чего мне все это нужно....ну это как бы мои пряники
 
 
Непрочитано 22.02.2004, 11:10
#5
{Smirnoff}

Инженер по системам безопасности
 
Регистрация: 23.11.2003
Рига
Сообщений: 1,099


Вы имеете ввиду, что то типа макрорекордера который переводит готовый чертеж в LISP файл состоящий из построений отдельных примитивов из их DXF кодов? Типа такого:
Код:
[Выделить все]
(entmake '((0 . "ATTDEF")  (100 . "AcDbEntity") (67 . 0) (100 . "AcDbText")
	   (10 -1.20892 -1.02293 0.0) (40 . 0.8) (1 . "00") (50 . 
0.0) (41 . 0.75) (51 . 0.0) (7 . "Standard") (71 . 0) (72 . 1) (11 -0.008917 
-0.22293 0.0) (210 0.0 0.0 1.0) (100 . "AcDbAttributeDefinition") (3 . "") (2 . 
"ZONE:") (70 . 0) (73 . 0) (74 . 3)(62 . 0)))
; строит атрибут блока
и так из ЛИСП файла перерисовывать весь чертеж или его часть?

Валяется у меня где то такая штука недописанная. Нужно было щелкать по отдельным примитивам и она писала в текстовый файл их построение, убирая "лишние" точечные пары, добавляла также начало и конец файла построения. Потом текстовый файл нужно было просто переименовать в *.lsp. Помню что уже работала, но доводить до нормального состояния не стал, забросил т. к. отпала необходимость. Мне нужно было програмно отрисовать штук 40 блоков с атрибутами, вот я и готовился сделать это одним махом.

Примерно об этом идет речь?
{Smirnoff} вне форума  
 
Непрочитано 22.02.2004, 11:17
#6


 
Сообщений: n/a


Fantomas, да именно об этом речь и идет.
Если не сложно\жалко, может быть поделитись, хотябы набросками...программы? Чуствую придеться самому писать (((
 
 
Непрочитано 22.02.2004, 11:18
#7
{Smirnoff}

Инженер по системам безопасности
 
Регистрация: 23.11.2003
Рига
Сообщений: 1,099


Оба на тут уже два постинга, пока я свой писал.

>John Уважаемый товарищъ! Не надо тут по поводу Starteka невежливо высказываться. У него целый сайт с огромным количеством прекрасных ЛИСПов им написанных. Если вас не правильно поняли, то в этом только ваша вина, мне тоже пришлось "допирать" чего же вы хотите.
{Smirnoff} вне форума  
 
Автор темы   Непрочитано 22.02.2004, 13:17
#8
John


 
Регистрация: 28.01.2004
Сообщений: 2


Цитата:
Сообщение от Fantomas
Оба на тут уже два постинга, пока я свой писал.

>John Уважаемый товарищъ! Не надо тут по поводу Starteka невежливо высказываться. У него целый сайт с огромным количеством прекрасных ЛИСПов им написанных. Если вас не правильно поняли, то в этом только ваша вина, мне тоже пришлось "допирать" чего же вы хотите.
Насчет Starteka извеняюсь.
Ну а если возвращаться к топику:
Fantomas, не поделитись ли сырцами или может быть порекомендуете сайт где поискать ?
John вне форума  
 
Непрочитано 22.02.2004, 14:43
#9
{Smirnoff}

Инженер по системам безопасности
 
Регистрация: 23.11.2003
Рига
Сообщений: 1,099


Поделюсь, когда доберусь до работы.
{Smirnoff} вне форума  
 
Непрочитано 22.02.2004, 19:36
#10
vk

сисадмин
 
Регистрация: 26.08.2003
Самара
Сообщений: 1,022
<phrase 1=


Сложнейшую задачку Вы решили себе создать, товырищЪ! Для чего оно Вам надо... ладно, это Ваши пряники А придется, однако, сочинить нехилый анализатор DXF файла. Подозреваю, что по сложности он получится никак не проще аналогичного акадовского. Другими словами, Вам надо прочитать все DXF коды из файла, определить, что они означают (системная переменная, графический примитив, словарь, и прочее черт-те-что, вроде ACIS-объектов и примитивов, созданных не-акадом, но им поддерживаемых), разобраться с "матрешками" (вхождениями примитивов в состав блоков, групп)... И в заключении - умудриться перевести все это дело в команды Акада и функции Лиспа. И чтоб оно еще и не глючило.

Позвольте пожелать Вам удачи!
Пока что я настроен несколько скептически в отношении предполагаемого результата. Это, конечно, не значит, что задача нерешаема (а если и решаема, то явно не в одно лицо).
vk вне форума  
 
Непрочитано 22.02.2004, 21:26
#11
Perezz!!
Moderator

архитектор
 
Регистрация: 21.08.2003
Москва
Сообщений: 3,587


vk [sm204]
Perezz!! вне форума  
 
Непрочитано 22.02.2004, 22:52
#12
Startrek

AutoCAD/AutoLISP
 
Регистрация: 27.08.2003
Seattle/USA
Сообщений: 1,133


Я как раз Johna понял правильно. Он хочет при помощи AutoLISPa прочитать строчку за строчкой
DXF file (что вполне возможно) и с помощью того же AutoLISPa прорисовать примитивы (что тоже возможно) - только вот к чему все эти нагромождения? Ради спортивного интереса?
Ну кто в здравом уме займется таким времяпривождением - когда AutoDesk об этом уже позаботился (DXFIN, или прямо открыть как чертеж)? Когда-то я как и Fantomas эксперементировал с функцией ENTMAKE - в основном для разрисовки параметрически (програмно)обьектов - швелеров там, балок итд., но никак не для того что John желает. На такие дела обычно времени жалко.
А по поводу грубости, я не обижаюсь. Когда аргументов не хватает - остается только резкости говорить, не профессионально - да ладно.
Startrek вне форума  
 
Непрочитано 23.02.2004, 00:33
#13
vk

сисадмин
 
Регистрация: 26.08.2003
Самара
Сообщений: 1,022
<phrase 1=


>Startrek
"Строчка-за-строчкой" - это понятно. Найти начало и окончание описания примитива - это не проблема. Достаточно в совершенстве владеть описанием структуры файла. Сгенерить точечные пары из строк и сэнтмейкить кой-какие примитивы - в общем то тоже. Но, читаем первый постинг, создать из всего этого
Цитата:
набор комманд которые в итоге в AutoCAD-е и вычерчат те самые линии, многоугольники, штриховки ...
Вот тут самый интересный вопрос! Создать точную копию существующего DXF-файла - это одно дело, к тому же совершенно не нужное, так как Акад сам предоставляет эту возможность.

А вот куда более интересной кажется идея неких параметрических преобразований тех примитивов, что описаны в DXF-файле. Естественно, не банальное масштабирование по осям. Тоесть, имеем некоторую типовую деталь (в идеале - проект) и указав ключевые параметры получаем ту же самую деталь (не представляю, как это сделать с крупным проектом) но уже адаптированную и подогнанную под конкретные новые условия.
В принципе, наложив десятки ограничений на содержимое входного файла.... Впрочем, тут уже САПР вырисовывается, или маленький ее кусочек. Хотя есть подозрение, что подход маленько не с той стороны.

А что касается грубости - это не более чем отсутствие аргументов. Что прикольно в этой ветке - до сих пор никто кроме автора не знает ответа на один маааленький вопрос "Что должно получиться в результате?".

Гадать больше не хочется.
vk вне форума  
 
Непрочитано 23.02.2004, 00:52
#14
vk

сисадмин
 
Регистрация: 26.08.2003
Самара
Сообщений: 1,022
<phrase 1=


Цитата:
Такс...давай те еще раз.

Вопервых сразу хочу уточнить, что синтаксис и комманды LISP-а я низнаю, но предпологаю что в нем есть комманду рисования линий, (как она выглядит я низнаю), предположим что она выглядит следующим образом:

draw_line(x1,y1,z1,x2,y2,z2);

так вот задача в следующем:

есть dxf файл, в котом "нарисованно" 50 линий, программа должна "взять" все эти линии и "расписать" их через комманды LISP-а..............
А зря.
Тээкс... ну "давай те" начнем с того, что в Лиспе совершенно отсутствуют "команды". Увы, одни функции, как это ни печально. Одна из фунций - (command) - есть ничто иное, как точное отображение набираемого в командной строке с учетом особенностей Лисп. Например
Код:
[Выделить все]
(command "_.line" '(0.0 10.5) '(20.4 10.5) "")
или для вышеозначенного примера
Код:
[Выделить все]
(command "_.line" (list x1 y1 z1) (list x2 y2 z2) "")
Может быть, стоит начать с изучения Лиспа?
vk вне форума  
 
Непрочитано 23.02.2004, 08:43
#15
Startrek

AutoCAD/AutoLISP
 
Регистрация: 27.08.2003
Seattle/USA
Сообщений: 1,133


А может начать с изучения русского языка

Цитата:
Вопервых сразу хочу уточнить, что синтаксис и комманды LISP-а я низнаю, но предпологаю что в нем есть комманду рисования линий, (как она выглядит я низнаю), предположим что она выглядит следующим образом:
"низнаю" вообшем-то пишется - НЕЗНАЮ
Шучу, шучу - наверное просто опечаткa
Startrek вне форума  
 
Непрочитано 24.02.2004, 10:19
#16
Pilot

Проектировщик свиноводство
 
Регистрация: 21.08.2003
Сообщений: 2,260


Ето у уважаимаго ниопичатка, а сленг такой
Pilot вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > DXF to LISP

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск