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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Некорректная работа command «_line»

Некорректная работа command «_line»

Ответ
Поиск в этой теме
Непрочитано 15.03.2019, 00:33 #1
Некорректная работа command «_line»
sergeyVostok
 
Регистрация: 15.03.2019
Сообщений: 18

Здравствуйте ) Подскажите пожалуйста, такая проблема. Рисую прямоугольник по точкам, командой _line. В отладке могу наблюдать координаты этих точек, все нормально. Но при при изменении размеров экрана колесом мыши до определенной величины (когда все мелко) вертикальные стороны рисуются точками и выводится сообщение о том, что создана линия нулевой длины. Соответственно вертикальные стороны вырождаются в точки и прямоугольник вырождается в линию. Вертикальные стороны не равны тем значениям, которые указаны в координатах. При увеличении изображения на экране, все строится нормально. В чем может быть дело ? Голову себе уже сломал.
Померил линейкой сторону прямоугольника при которой программа еще отрисовывает его корректно. Размер прямоугольника 40х25. Так вот, при уменьшении экрана так, что высота 25 мм равна 7 мм (померил линейкой по экрану) еще фигура строится. Если крутануть колесо и уменьшить экран на одну позицию, уже не строится. Текст программы простейший:
Код:
[Выделить все]
 (DEFUN c:excToACad (/)
(setq a 40)
(setq b 60)
(setq p1 (getpoint «\nУкажите базовую точку:»))
(setq k1 (mapcar ‘+ p1 (list a 0)))
(setq k2 (mapcar ‘- k1 (list 0 b)))
(setq k3 (mapcar ‘- k2 (list a 0)))
;;;(command «_line» p1 k1 k2 k3 p1 «»)
(command «_line» p1 k1 «»)
(command «_line» k1 k2 «»)
(command «_line» k2 k3 «»)
(command «_line» k3 p1 «»)
)

Последний раз редактировалось Кулик Алексей aka kpblc, 15.03.2019 в 06:37.
Просмотров: 2463
 
Непрочитано 15.03.2019, 06:38
#2
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 36,742


Грабли номер раз
__________________

---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 15.03.2019, 07:24
#3
Семёныч


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


Про грабли хорошо напоминать тем, кто на них наступает не первый раз. Но если человек сталкивается с описанной проблемой впервые, то надо бы сразу пояснить,
что в случае очень маленьких (визуально) расстояний между точками при программных построениях включенная объектная привязка может исказить картину. Самый простой способ
отключения объектных привязок - нажать клавишу F3. Далее автору темы надо почитать всё про объектную привязку.
Семёныч вне форума  
 
Непрочитано 15.03.2019, 07:38
#4
ShaggyDoc

Thượng Tá Quân Đội Nhân Dân Việt Nam
 
Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 11,094


Цитата:
Сообщение от Семёныч Посмотреть сообщение
Самый простой способ
отключения объектных привязок - нажать клавишу F3. Далее автору темы надо почитать всё про объектную привязку.
Совет неверный. Пользователю как раз не надо советовать отключать объектную привязку клавишей, возможно она как раз ему нужна для точного указания точек.

А вот программист должен позаботиться о том, чтобы перед рисованием, когда координаты уже известны, привязку отключить программно, а после рисования вернуть прежние настройки.
ShaggyDoc вне форума  
 
Непрочитано 15.03.2019, 09:46
#5
Семёныч


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


Цитата:
Сообщение от ShaggyDoc Посмотреть сообщение
Совет неверный. Пользователю как раз не надо советовать отключать объектную привязку клавишей, возможно она как раз ему нужна для точного указания точек.
А вот программист должен позаботиться о том, чтобы перед рисованием, когда координаты уже известны, привязку отключить программно, а после рисования вернуть прежние настройки.
Заявление демагогическое и волюнтаристское. ShaggyDoc, возможно, и является программистом (или считает себя таковым), но автор темы - скорее пользователь, чем программист.
Для сведения ShaggyDoc: любой пользователь и даже программист должен знать штатные инструменты AutoCAD, в том числе должен уметь использовать функциональные клавиши. Это вам не лезгинку плясать не двойной щелчок по колёсику мыши. Если господин ShaggyDoc такой опытный программист (или считает себя таковым), то почему тогда он не расписал возможные проблемы при аварийном завершении программы (например, при нажатии клавиши Esc до завершения программы) после программного отключения привязок? Почему он не упомянул, что переменные в программе автора темы оказываются глобальными? Почему он, наконец, не попенял автору темы за отсутствие в конце программы выражения (princ) для тихого завершения программы? Сам-то ShaggyDoc, видимо, не считает себя пользователем и никогда не нажимает никакие функциональные клавиши, ведь он же ПРОГРАММИСТ (или считает себя таковым).
Offtop: Гордыня заела.
Семёныч вне форума  
 
Непрочитано 15.03.2019, 10:09
| 2 #6
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 36,742


Семёныч, все уже давно существует:
http://autolisp.ru/2016/12/06/undomarks/
http://autolisp.ru/2009/09/13/error-catch/
P.S. ShaggyDoc - один из авторов "САПР на базе AutoCAD" (ну так, к слову)
__________________

---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 15.03.2019, 10:16
| 1 #7
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 6,984


Offtop:
Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
ShaggyDoc - один из авторов "САПР на базе AutoCAD" (ну так, к слову)
И настольной книги многих лисповцев - "AutoLISP и Visual LISP в среде AutoCAD", насколько я понимаю)
Сергей812 вне форума  
 
Непрочитано 15.03.2019, 10:46
#8
CalcProg


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


САПР на базе АutuCAD - как это делается. С.Зуев. Н. Полещук. там есть ответ на твой вопрос. На станице 248.
Offtop:
когда то давно купил эту книгу. но вот сама сапр, что была на диске так и не установилась.
пробовал её устанавливать на разных компах с разными системами и разными автокадами.
отсюда вопрос у кого нибудь, эта САПР работала?

Последний раз редактировалось CalcProg, 15.03.2019 в 11:01.
CalcProg вне форума  
 
Непрочитано 15.03.2019, 10:49
1 | #9
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 36,742


Offtop:
Цитата:
Сообщение от Сергей812 Посмотреть сообщение
AutoLISP и Visual LISP в среде AutoCAD
Это от Полещука
__________________

---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 15.03.2019, 17:37
#10
sergeyVostok


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


Цитата:
Сообщение от Семёныч Посмотреть сообщение
Но если человек сталкивается с описанной проблемой впервые, то надо бы сразу пояснить,......
Спасибо за понимание !
Думаю все таки, что я программист ) но не по части Lisp'а. Больше по Embeded system (микроконтроллеры). Немножко Делфей, для обмена с приборами. Интерфейсы и прочая лабуда.
Но Lisp' ом заинтересовался, решив заточить под себя черчение электрических схем. Знаю, что по любому уже есть наработки по этой теме. Да и есть наш заточенный NanoCAD. Но я, не по собственной воле, ограничен Автокадом.
Поэтому решил замутить черчение разъемов и микросхем путем чтения данных о наименовании выводов, их функционального назначения, нумерации контактов из таблицы Excel или файла с расширением csv. После подсчета количества контактов, определяем габарит микросхемы на чертеже и вычерчиваем ее со всем текстом внутри.
Про глобальные переменные знаю )))))
Парсинг файла уже замутил, но вот споткнулся о грабли, но я не знал что это грабли )))
Поэтому спасибо всем за оперативность, за ссылки - отличный форум.
sergeyVostok вне форума  
 
Непрочитано 15.03.2019, 20:23
#11
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 6,984


Цитата:
Сообщение от sergeyVostok Посмотреть сообщение
Парсинг файла уже замутил, но вот споткнулся о грабли, но я не знал что это грабли )))
ещё ваши грабли - что вместо работы с объектной моделью акада и БД самого чертежа (неважно, на каком языке) используете командные методы)
Сергей812 вне форума  
 
Непрочитано 15.03.2019, 20:40
#12
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 36,742


Сергей812, лисп тем и хорош - для начала работы можно просто имитировать ввод в ком.строку. Это потом уже начинается понимание, что не все так просто
__________________

---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 15.03.2019, 20:47
#13
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 6,984


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
для начала работы можно просто имитировать ввод в ком.строку. Это потом уже начинается понимание, что не все так просто
ну поскольку у ТС уже есть определенный опыт в программировании - то лучше не привыкать изначально к командному "стилю", имхо)
Сергей812 вне форума  
 
Непрочитано 15.03.2019, 21:17
| 1 #14
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 36,742


Offtop: Сергей812, не поверишь, но я начинал именно с этого )))
__________________

---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 18.03.2019, 14:47
#15
trushev


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


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
я начинал именно с этого
Offtop: В конце прошлого тысячелетия иных путей не было. Разве что пакет.
Если уважаемый полковник найдет время с удовольствием почитаю о тех временах в ностальгии.

Последний раз редактировалось trushev, 18.03.2019 в 15:05. Причина: добавление
trushev вне форума  
 
Непрочитано 19.03.2019, 07:34
#16
trir


 
Регистрация: 18.12.2010
Сообщений: 3,459


Из Delphi можно достучатся до AutoCAD'а через COM. А ещё можно использовать NET API и VS
trir вне форума  
 
Непрочитано 19.03.2019, 08:03
#17
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 36,742


И при чем тут это?
__________________

---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 19.03.2019, 19:22
#18
sergeyVostok


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


Цитата:
Сообщение от trir Посмотреть сообщение
Из Delphi можно достучатся до AutoCAD'а через COM. А ещё можно использовать NET API и VS
Казалось бы не по теме )) НО !!! Я же замутил автоматизацию. И с этими мыслями, дабы не плодить темы, зашел сюда пару строк чиркануть. А тут мои мысли уже угадывают )
Хотел вот про что прознать. В принципе задумка у меня была такая: " а как чертить, не чертя ? " В ГОСТах ведь уже оговорено что да как чертить. Например, если взять разъем или микросхему. По сути это таблица с надписями. То есть её можно начертить не чертя, а лишь указав в диалоговом режиме количество выводов и заполнив графы наименований. Сейчас я это сделал путем чтения файла *csv.
А на будущее, как лучше подойти к реализации диалогового режима ? Например, я вытаскиваю на поле заготовку, клацаю на нее двойным щелчком, вылазит таблица (она может быть уже на Delphi реализована), заполняем графы, жмем OKей'на и разъем вычерчивается с заполненными графами, подогнанными по размерам надписей и т.д. На диалогах DCL я так понял тоже далеко не уедешь. Тем более тут еще бы прикрутить БД (которая может быть написана на чем-то третьем) из которой я мог бы выбирать тип, например, резистора, его номинал, чтобы в дальнейшем использовать это в спецификации. AUTOLISP тоже не очень удобен в программировании, если речь идет не о черчении. Например с массивами пришлось выворачиваться, что не очень удобно. Элемент в списке не перезаписать, как в обычном массиве. В Делфях и СИ намного легче выполнять такие задачи, понятно там другие задачи. А еще есть задача и по Базе Данных. Т.е. задача черчения делиться на логическую часть, на отрисовку и Базу Данных. Вот какими средствами это все в комплексе лучше замутить ? Конечно, лучше взять NanoCAD Electrical и не мучиться, но все же интересно, для саморазвития так сказать. Про COM и Delphi взял на заметку. NET API и VS для меня пока что-то непонятное, но тоже взял на заметку. Вообще может тут и AUTOCAD не нужен ? )))) Но писать свой движок для работы с примитивами наверно задача гораздо более сложная. В общем какие варианты комбинаций средств разработки и обмена информацией между модулями можете предложить еще ? P.S. Насколько разными путями можно решить задачу догадываюсь ) По сути это создание своего продукта. Но таскать туда-сюда буквы и линии на чертеже как-то не доставляет уже. Даже динамические блоки полностью не избавляют от обезьянних операций.
sergeyVostok вне форума  
 
Непрочитано 19.03.2019, 21:51
#19
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 6,984


Почитайте про Net Api в AutoCAD)
Сергей812 вне форума  
 
Непрочитано 19.03.2019, 22:00
#20
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 36,742


Цитата:
Сообщение от sergeyVostok Посмотреть сообщение
На диалогах DCL я так понял тоже далеко не уедешь
Можно, и нередко их хватает.
Цитата:
Сообщение от sergeyVostok Посмотреть сообщение
Тем более тут еще бы прикрутить БД (которая может быть написана на чем-то третьем) из которой я мог бы выбирать...
Ну и в чем проблема? Если использовать lisp, то поднимаешь коннект к БД, потом RecordSet и выполняй свои запросы - хоть так, хоть этак.
Цитата:
Сообщение от sergeyVostok Посмотреть сообщение
Элемент в списке не перезаписать
Че ета? subst в первую очередь - и понеслась.
__________________

---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Некорректная работа command «_line»

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Динамический блок с полярным растяжением. Совмещение ручек - некорректная работа Donhuan Динамические блоки 2 04.09.2018 11:26
Некорректная работа автокада при копировании в буфер обмена dimasic2 AutoCAD 12 16.05.2018 15:33
Некорректная работа с ручками объектов в блоках. sunrise713 AutoCAD 5 11.04.2012 14:18
некорректная и неустойчивая работа BOUNDARY в режиме "Pick Points" АлексЮстасу Баги и пожелания в Autodesk 10 25.03.2010 03:39
SCAD. Команда "Разделение элементов". Некорректная работа Den_Den SCAD 4 04.12.2008 16:51