|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
![]() |
#1 | |
Поворот и зеркалирование вставляемого блока в Autocad через Delphi
Регистрация: 02.08.2013
Сообщений: 9
|
||
Просмотров: 5216
|
|
||||
Цитата:
Цитата:
Цитата:
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic) |
||||
![]() |
|
||||
Регистрация: 02.08.2013
Сообщений: 9
|
да, я знаю команду RetVal.rotate(p1,1)
где p1 = точка куда первый раз клацнули ну и 1 = угол в радианах и он поворачивает объект на определенный угол а мне бы чтобы мышкой водить или вы имеете ввиду Acad.ActiveDocument.SendCommand('rotate' + #13); ? ORTHOMODE я так понял это переменная окружения автокада. попробую. спасибо ![]() ![]() конечно я понимаю, что лучше arx сразу делать или на .net но увы только delphi знаю. но документации и примеров маловато в инете по связкам COM+ что либо еще |
|||
![]() |
|
||||
КЖ; C# Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,611
|
Делфи еще в 2003 году научился работать с net. Соответственно как писать программу решает программист. Хочет, использует Com модель, хочет net.
В net, то что Вы хотите реализуется с помощью класса Jig и его наследников. |
|||
![]() |
|
||||
Именно. Не знаю, как в Delphi будет выглядеть строка командного запроса, но нужно сделать так, чтобы объект и базовая точка передавались программно, а угол поворота задавался пользователем. В лиспе это делается с помощью функции command и специального аргумента pause.
Цитата:
Ищите в справке или в интернете AutoCAD ActiveX Reference. или http://vbamodel.narod.ru/
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic) |
||||
![]() |
|
||||
Регистрация: 02.08.2013
Сообщений: 9
|
орто научился выставлять
Doc.SetVariable('ORTHOMODE',1); комманда _rotate тоже подходит. но! для этого нужно выделить вставленный последний объект и сказать, команде rotate, что базовая точка поворота это точка вставки пока только проблема с выделением объекта переменная объекта есть, но команды типа RetVal.Select(....) не нашел может кто-то чуть подправит меня на истинный путь? ![]() |
|||
![]() |
|
||||
На AutoLISP как-то так:
Код:
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic) |
||||
![]() |
|
||||
Регистрация: 02.08.2013
Сообщений: 9
|
жалко, что так резко головой об автокад ударился
Код:
если вызвать acad.ActiveDocument.SelectionSets.Item('S1').Highlight(true); то блок подсвечивает. но без базовой точки. как будто не до конца выделил. непонятно. обычно при выделении видна базовая точка боюсь, что иду по неверному пути я думал нужно его выделить программно и дать комманду _rotate но если выделить объект и набрать _rotate 300,300 45 то оно после каждого пробела предлагает выбрать базовую точку(к примеру 300,300), и потом угол наклона, который или мышкой или программно 45 поставил в принципе это и нужно , но мать его!!!!! объект не выделяется визуально моим кодом ![]() то выдает что 1 элемент есть есть команда _.qselect которая предлагает по параметрам выбрать объекты имя его я знаю. но увы не знаю параметров этой команды. может кто видел хелп по командам autocad? с описанием параметров Последний раз редактировалось kolio, 21.05.2014 в 17:18. |
|||
![]() |
|
||||
инженер-проектировщик КИПиА Регистрация: 30.08.2008
Минск
Сообщений: 159
|
1. попробуйте вместо .Highlight(true) дать .Highlight(2); (3,4) - это для выделения
и, по моему, вид подсветки на набор не влияет 2. чтобы повернуть блок не обязательно его выделять, ... я, правда, не особо помню как там в делфи, но думаю смысл на ActiveX лиспе, vba, С# и.т.п. должен быть один и тот же. 3. чтобы крутить вставленный блок - его нужно сначала вставить а потом, отлавливая положение мышЫ, менять его параметр rotate (на лиспе это реализуется с помощью команды grread и последующей обработке ее значений) |
|||
![]() |
|
||||
КЖ; C# Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,611
|
COM средствами реализовать то, что вы хотите невозможно, по этому Вам приходится выдумывать костыли в виде вызова Lisp, хотя если перейти на .net то все работает штатными средствами.
Вот пример накидал: http://youtu.be/11KTfvp2kyM Код:
Последний раз редактировалось Boxa, 22.05.2014 в 13:01. Причина: Блин, код то не вставился =( Исправляю. |
|||
![]() |
|
||||
В автокаде подсветка(Highlight) и выделение - понятия различные. Подсветить с помощью ActiveX можно, а вот полноценно выделить - вроде бы никаких методов нет для этого. Обычно используют костыли в виде SendCommand и в него передают команды или лисп-функцию SSSETFIRST с нужными наборами.
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic) |
||||
![]() |
|
||||
Регистрация: 02.08.2013
Сообщений: 9
|
эээххххх. я в расстройстве
![]() какой то неполноценная связь в COM. насколько я понял просто не все возможности программы реализовали автокадовцы в нём я в печали полной правда попробовал Код:
но автолисп я не знаю. страшноватый какой-то язык по виду осталось зеркалирование сделать те ми же костылями ![]() а LISP поддерживается в 2013-2014 версии? Спасибо Вохе за видео. Приятно общаться с человеком который делится знаниями на таком уровне. Завидую Вам в хорошем смысле слова. Последний раз редактировалось kolio, 22.05.2014 в 12:47. |
|||
![]() |
|
||||
КЖ; C# Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,611
|
Цитата:
ЗЫ. Сразу код не запостился, а я убегал и не заметил оплошности. Удачи. Надеюсь у Вас все получится. Последний раз редактировалось Boxa, 22.05.2014 в 17:11. |
|||
![]() |
![]() |
|
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Документация Проектировщику на Torrents | DEM | Разное | 263 | 03.09.2024 12:25 |
Видеоуроки AutoCAD | kosmax | AutoCAD | 173 | 17.02.2017 15:08 |
1. AutoCAD | Кулик Алексей aka kpblc | FAQ: Часто задаваемые вопросы | 25 | 27.09.2016 13:29 |
AutoCAD 2008, программное удаление объектов RTEXT из состава блока | Кулик Алексей aka kpblc | Программирование | 3 | 28.04.2009 08:48 |
AutoCad и Delphi. Добавление точки | Зойберг | Программирование | 15 | 28.02.2008 23:18 |