LINUX.ORG.RU

Самодельный CAD на Питоне

 , ,


2

3

Если быть кратким - на досуге написал простую 2D CAD программу. Может:

  • рисовать линии, дуги, окружности
  • ставить размеры (пока только ортогональные и радиальный)
  • создавать текстовые строки
  • редактировать то, что начерчено (менять цвет, толщину линий, тип линий, размер и тип шрифта, ширину оного, менять различные параметры у размеров)
  • производить всякие действия с начерченым (копировать, перемещать, удалять, вращать, масштабировать, подрезать/удлинять линии)
  • сохранять начерченное в файл (пока только в txt, но планируется поддержка DXF)
  • Выводить изображение в файл PostScript, который можно без труда перевости в pdf или gif через онлайн-конвертеры.

Принципы навигации и черчения похожи на те, что в автокаде, но с некоторой спецификой. Можно уже создавать простые чертежики:). Писано на Python 2 (больше ни на чем не умею), использованы только стандартные библиотеки. Уместилось в 8000 строк ужасного кода. Ссылка на SAMoCAD на SourceForge

Установки не требует, достаточно распаковать архив так, чтобы в пути не было кириллических символов и запустить файл SAMoCAD.pyw. Ну и само собой, должен быть установлен Python 2.

Хочется, чтобы кто-нибудь опробовал это творение и написал о своих ощущениях. Буду рад пожеланиям по части дальнейшей разработки, а также сообщениям об ошибках :-)

SAMoCAD

Название ржачное. Только написание корявое. SamoCAD вполне бы сошло. Или SAM как-то расшифровывется?

Zubok ★★★★★
()
Последнее исправление: Zubok (всего исправлений: 1)
Ответ на: комментарий от Deleted

Слишком малораспространённо. Я бы и Tk не указал, но у питонистов к нему странная любовь.

srrmk
()

чтобы в пути не было кириллических символов

пахнет Эдиком

anonymous
()

чтобы в пути не было кириллических символов

Забыл - на Линухи это не распространяется.

VVS1864
() автор топика
Ответ на: комментарий от srrmk

а чё, круто. ті ракету начертил, а он её слил бесплатно без смс

anonymous
()

Нормальный такой CAD.

Что за шрифты используются?

Не хватает трассировки, или хотябы сетки. Без dxf тоже никак((

zamtmn ★★
()

И резиновость неплохо бы при редактировании

zamtmn ★★
()
Ответ на: комментарий от zamtmn

Как таковых шрифтов нет, это всего лишь сложный объект из множества линий. Соответственно какие координаты линиям задашь, такой шрифт и будет, я вручную забил 2 шрифта - узкий архитектурный, и как TXT в автокаде. В начале пытался использовать рендеринг шрифтов из Ткинтера, но оказалось что они не могут поворачиваться.

VVS1864
() автор топика

инструмент на понели

В руководстве. Аж глаза резануло. Твоя либра не подчёркивает ошибки?

ziemin ★★
()
Ответ на: комментарий от zamtmn

Не совсем. Когда нужно создать шрифт, прога отправляет в отвечающий за текст модуль текстовую строку, тот пробегает по символам этой строки и в зависимости от того какой шрифт создает список координат линий каждого символа, заливает его в список списков таких координат и возвращает его в главный модуль, а тот тупо рендерит линии по прешедшим координатам и создает как бы объект-текст. Т.е. залить туда какие-то сторонние шрифты просто так не получится, их придется перевести в набор линий. Есть такая прога - Archimedes называется, я пытался ее исходники понять в свое время, у них шрифты так-же рисовались, но там на Java какая-то вещь была, любой шрифт разберала по линиям. Тут тоже можно попробовать так сделать, но мне кажется есть более первостепенные задачи.

VVS1864
() автор топика
Ответ на: комментарий от ziemin

А мне показалось, что так правильнее :) Ок, исправим.

VVS1864
() автор топика
Ответ на: комментарий от ziemin

Русский мануал перезалил - поисправлял жесткие опечатки + о некоторых ништяках в прошлой версии забыл написать.

Когда нужно создать шрифт

Имеется в виду текстовую строку на чертеже.

VVS1864
() автор топика

Занятно, успехов в начинании.

Отдельный плюс за нонконформизм в лице Tkinter :)

yoghurt ★★★★★
()
Ответ на: комментарий от VVS1864

Как таковых шрифтов нет, это всего лишь сложный объект из множества линий.

Собственно TryeType шрифты примерно так и выглядят.

RiseOfDeath ★★★★
()

Неплохо. Добавь пункт Close в меню File, чтобы закрыть текущий чертеж

WRG ★★★★
()

Потыкал. Через некоторое время начал сыпать на консоль

Exception in Tkinter callback
Traceback (most recent call last):
  File "/usr/lib/python2.7/lib-tk/Tkinter.py", line 1473, in __call__
    return self.func(*args)
  File "/home/bigdata/SAMoCAD_v0.0.6_alpha/draft.py", line 2889, in arc3
    self.c_arc(self.ex,self.ey,self.ex2,self.ey2,self.ex3,self.ey3)
  File "/home/bigdata/SAMoCAD_v0.0.6_alpha/draft.py", line 3577, in c_arc
    aa = self.calc_angle(x0, y0, x2, y0, xr1, yr1)*180.0/math.pi
  File "/home/bigdata/SAMoCAD_v0.0.6_alpha/draft.py", line 4006, in calc_angle
    a = math.acos((x1 * x2 + y1 * y2) / (d1 * d2))
ZeroDivisionError: float division by zero

и ничего не дает сделать пока не закроешь.

anonymous
()
Ответ на: комментарий от anonymous

Ага, это видимо была попытка создать дугу у которой все 3 точки в одной. Исправим.

и ничего не дает сделать пока не закроешь.

Ести такая клавиша на клавиатуре - Escape, прекращает выполнение текущей функции и возвращает события в исходное состояние - короче решает большинство проблем.

VVS1864
() автор топика
Ответ на: комментарий от VVS1864

и в зависимости от того какой шрифт создает список координат линий каждого символа

где лежат сами шрифты? т.е. исходные описания линий каждого символа? Почему не заюзал автокадлвские shx\shp?

zamtmn ★★
()
Ответ на: комментарий от zamtmn

Залил обновленную версию на SF, исправлены косяки с делением на ноль и подчистил дерьмокод немного. Прошу скачивать новую версию.

где лежат сами шрифты?

Смотри файл symbols.py - это модуль отвечающий за координаты шрифтов, там я теперь коментарии добавил, наверное будет понятно как он работает.

Почему не заюзал автокадлвские shx\shp?

1) Не разбирался в теме, изначально вообще не планировалась совместимость с другими кадами, Сейчас понятно, что это нужно, и задача эта только еще предстоит. 2) Принцип действия программы мягко говоря отличается от автокада, чтобы туда что-то из него залить, нужно сначала сделать переходник. Сейчас начал ковырять DXF, пока не сильно понятно.

VVS1864
() автор топика
Ответ на: комментарий от VVS1864

shp - хорошо документированый и не очень сложный формат, зато сразу будет разнообразие шртфтов.

Сейчас начал ковырять DXF, пока не сильно понятно.

Ковыряй сразу dxf2000 и выше, на dxf12 не отвлекайся, хотя он и проще

zamtmn ★★
()
Ответ на: комментарий от anonymous

Делаю export/import DXF. Большую часть того, что делает программа, удается сохранять и открывать в автокаде. Сейчас почти победил размеры. Где-то через неделю выложу на SF что-то более-менее работающее.

P.S. По мере продвижения в DXF буду делать человечачию спецификацию к формату. То, что сейчас имеется, меня совершенно не устраивает, особенно доставляют автодесковские DXF Reference - вроде все написано, а оказывается, что ничего там нет...

VVS1864
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.