|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
![]() |
#1 | |
Можно ли прорисовывать блоки в AutoCAD2007 через C#
Регистрация: 19.12.2011
Сообщений: 35
|
||
Просмотров: 15436
|
|
||||
Цитата:
Цитата:
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: |
||||
![]() |
|
||||
специалист по околачиванию грушевых деревьев Регистрация: 14.09.2004
Pietari, Venäjä
Сообщений: 811
|
Все это делается элементарно
Если вставляется чертеж как блок, можешь использовать такую команду (правда код на VB.NET,но легко транслировать на C#) Код:
используй для его чтения методы ReadDwgFile и метод WBlockCloneObjects для импорта нужных блоков Смотри на болоте http://www.theswamp.org/index.php?board=27.0 и у Кина Волмслея http://through-the-interface.typepad.com/ Вот пример на скорую руку того что тебе нужно Документ источник должен быть активным блоки копируются из него в новый документ Измени значения на нужные Код:
Последний раз редактировалось Олег (jr.), 19.12.2011 в 16:15. Причина: code added |
|||
![]() |
|
||||
специалист по околачиванию грушевых деревьев Регистрация: 14.09.2004
Pietari, Venäjä
Сообщений: 811
|
Извини ничего объяснять не буду
Тебе нужно сюда: http://docs.autodesk.com/ACD/2010/EN...icNumber=d0e51 Смотри свойста и методы |
|||
![]() |
|
||||
Регистрация: 19.12.2011
Сообщений: 35
|
Добрый день!
Подскажите пожалуйста, как именно прорисовать в пространстве модели блок по определенным координатам..... Не могу разобраться ..... Я понял как скопировать блоки из внешнего файла в базу открытого файла! Теперь не могу прорисовать..... Может есть у кого нибудь исходник на чем нибудь..... Или ткните носом в тех которых уже есть..... Я был бы весьма признателен..... Заранее спасибо! |
|||
![]() |
|
||||
Цитата:
![]() То о чём спрашиваешь, называется "создание вхождения блока". Тут пример создания определения блока и его вхождения (второе - то, о чём спрашиваешь).
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: |
||||
![]() |
|
||||
специалист по околачиванию грушевых деревьев Регистрация: 14.09.2004
Pietari, Venäjä
Сообщений: 811
|
Глянь мой набросок здесь
в коде найдешь и создание и вставку и еще чего полезного: http://www.acadnetwork.com/topic-147.0.html |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,409
|
Олег (jr.), там регистрация требуется
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Чем не устроила ссылка на KEAN WALMSLEY? Всё то же самое...
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: |
||||
![]() |
|
||||
Так ты показал идентичный код.
![]()
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: |
||||
![]() |
|
||||
Идентичный - не значит, что "стыренный"(с). Я о том, что оба кода делают одно и то же: создают определение блока и затем его вхождение (я же писал об этом). А поскольку уже есть ссылка, то какой смысл давать ещё одну на идентичный (по характеру содержимого) ресурс? Если автор не поймёт содержимое первой ссылки, то вторая ему так же не поможет...
![]() Ладно, забудь... ![]()
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: Последний раз редактировалось hwd, 11.01.2012 в 22:16. |
||||
![]() |
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372
|
Сколько кода, чтобы всего лишь создать блок и вставить! А если сотни всяких блочков вставлять, с разными масштабами, поворотами, разнотипными атрибутами?
"Месье знают толк в извращениях" (С) |
|||
![]() |
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,839
|
Offtop: Так это еще не весь код - надо еще стандартную "шапку" библиотек подключить...
p.s. но правда от сотни блоков (при правильном подходе) код не более чем на 5 строк вырастет
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
![]() |
|
||||
Цитата:
1. Создать блок и настроить различные его параметры (в случае необходимости) - это всегда будет требовать написания некоторого объёма кода. 2. Если имеется определение блока, то просто создать его вхождение - много строк кода не займёт. А вот если потребуется не просто создать вхождение, но и выполнить некоторую инициализацию атрибутов, настроить некоторые свойства - тут так же придётся писать соответствующий код. При желании указанный код можно написать более компактно, но всё равно это не будет 2-3 строчки. Может конечно в Lisp'е это и проще/короче делается, прописывая все параметры сразу в виде списка, но ведь C# это не Lisp ![]() Цитата:
![]()
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: Последний раз редактировалось hwd, 12.01.2012 в 10:58. |
||||
![]() |
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,839
|
Цитата:
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
![]() |
|
||||
Лично для меня читабельность важнее краткости, поэтому данное обстоятельство меня не смущает. Кроме того, в .Net-коде можно управлять транзакцией (код увеличивается в том числе и из-за этого, но оно того стоит), а в VBA, насколько я вижу - нет. VBA в AutoCAD мне чем-то напомнил VBA в MS Access (чёрный ящик).
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: |
||||
![]() |
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,839
|
То hwd - а Вы лисп читать умеете? Вопрос серьезный - ибо с моей точки зрения (хоть он действительно и непривычный) формат лиспа один из самых читабельных - чего точно не скажешь про любой диалект С (про конкурсы не читаемости, либо "спрятанности" пасхального яйца в коде на С я думаю Вы знаете).
з.ы. любой лисп код можно автоматически сделать читаемым в смыле отсупов и фрагментов кода.
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
![]() |
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372
|
Цитата:
И не "все сразу в виде списка", а как удобнее - и по отдельности, и списком. И можно функцию с аргументами выполнять любым способом - хоть из командной строки, хоть из меню, хоть из внешних файлов. Заодно в виде аргументов можно и символьное имя какой-то другой функции передать. Цитата:
А ну-ка, сделайте функцию или команду для множественной вставки любого блока, которой передается имя блока, масштабы вставки и, факультативно, угол поворота. 1. Во время процесса вставки до указания точки изображение блока висит на курсоре в отмасштабированном виде. 2. После указания точки - визуальный (или клавиатурный) поворот. 3. Блок может иметь (а может не иметь) атрибуты любых типов. 4. Вставка (с висящим блоком) запрашивается, пока не будет пустой ввод или нажатие ESC. 5. И работать должно в любой системе координат. 6. Да чтобы можно было в меню записать. Цитата:
|
|||
![]() |
|
||||
Цитата:
Простые вещи читать могу, в рамках функций AutoLisp, которые ещё помню. А поскольку помню я не так уж и много (например тот же VisualLisp я вовсе не знаю), то... ![]() Цитата:
Цитата:
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: Последний раз редактировалось hwd, 12.01.2012 в 12:07. |
||||
![]() |
|
||||
Я так понял, что Дима_ видит существенную разницу (по смыслу содержимого) между кодом Волмслея и кодом Олега... Иначе этой фразы бы не было... Либо действительно считает что "_insert" это "то же самое" (с) - должен огорчить, что не разделяю этого мнения (т.е. это не то же самое).
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: |
||||
![]() |
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,839
|
Я не смотрел коды, но про _insert естественно написал как шутку. Просто как-то была большая тема где ShaggyDoc утверждал что подобное можно реализовать только командными методами - а я там исполнял без них. Про ссылки в предыдущем посте я имел в виду ссылку ShaggyDoc'а.
p.s. она кстати
__________________
Когда в руках молоток все вокруг кажется гвоздями. Последний раз редактировалось Дима_, 12.01.2012 в 12:33. |
|||
![]() |
|
||||
Регистрация: 21.02.2009
Сообщений: 825
|
Offtop:
Цитата:
А ну-ка, сделайте функцию или команду в LISPe чтоб можно было общаться с подшивкой ![]()
__________________
Я-проектировщик бывший проектировщик! |
|||
![]() |
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,839
|
Если кому интересно мое резюме по поводу AutoLisp\.Net - то общий ответ такой - лисп хороший, простой, хорошо совместимый, нетребовательный и удобный инструмент - но Autodesk на него положил - так что, если хотите остаться "на плаву" изучайте .Net.
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
![]() |
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372
|
Цитата:
Цитата:
Подшивки - хороший инструмент для интерактивной работы пользователя. Для этого и сделан, а не для программирования. Если понадобится такой же результат, как от применения подшивки, я сделаю его другими способами. Более простыми. Вообще не надо пытаться влезать с программированием в "ручные" средства. Вот, например (ближе к теме) - динамические блоки. Замечательная вещь для обычных пользователей - делать некоторую параметризацию изображений путем установки разных свойств. Т.е. задавая всякие свойства, нажимая кнопочки и прочее. Дает хорошие результаты, недаром тема так популярна. Потом с динамическими блоками начинают работать программисты и начинаются мучения. А этого просто не надо делать - надо не сами динамические блоки создавать и изменять, а конечный результат - т.е. требуемое изображение, безо всяких лишних движений. А результат можно получить разными способами. |
|||
![]() |
|
||||
Регистрация: 21.02.2009
Сообщений: 825
|
Offtop: Это тема другого разговора... Например для того чтоб в её свойства записывать данные которые потом отображаются в поле чертежа. Или "обрабатывать" только те листы, которые привязаны к подшивке. И т.п.
__________________
Я-проектировщик бывший проектировщик! |
|||
![]() |
|
||||
КИПиА Регистрация: 21.03.2005
Tyumen
Сообщений: 1,352
![]() |
ShaggyDoc
>>А ну-ка, сделайте функцию или команду для множественной вставки любого блока, которой передается имя блока, масштабы вставки и, факультативно, угол поворота. >>1. Во время процесса вставки до указания точки изображение блока висит на курсоре в отмасштабированном виде. >>... А если еще хочется немодального окошка с параметрами команды во время работы команды? |
|||
![]() |
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,839
|
Цитата:
У меня была конкретная задача (заказ на программу) которая после долгих согласований лучше всего была решенна, в том числе и с использованием динамических блоков (програмным считыванием и модификацией дин. параметров) - более того без них бы она усложнилась многократно (обойтись было-бы можно - но с очень сильным усложнением самого алгоритма).
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
![]() |
|
||||
Цитата:
Цитата:
Цитата:
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: |
||||
![]() |
|
||||
Josser Регистрация: 09.11.2011
Сообщений: 66
|
Цитата:
Последний раз редактировалось Salt, 12.01.2012 в 21:26. |
|||
![]() |
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372
|
Цитата:
Это же просто - классный профессиональный программист делает библиотеки (с использованием любых их любимых систем), а прикладные (в том числе простые инженеры) их используют. Примером может служить DOSLib. Она была еще во времена Автокад11 (1990 год), переписывалась в разных вариантах. Во всем мире используют. Давно предлагаю желающим мой диалог XML-меню переделать на .NET. Тут как раз все основания - и визуальность в стиле .NET сделать, и "немодальность", и XML используется. И наглядно доказать, насколько кто быстрее, и что проще дистрибутив NET притащить, чем команду регистрации выполнить. И насколько красивше. И все могли бы использовать. Все исходники готов дать (или подробное ТЗ), но желающих нет. Догадываюсь, почему. |
|||
![]() |
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,839
|
Ну я пока не слышал - но давайте так - Вы подробно описываете что делает Ваш диалог (такое постфактум ТЗ) - я делаю один-в-один на .Net - выкладываю исходники - но Вы "торжественно клянетесь" - что впредь и везде будуте использовать только его вместо своего (а иначе кому он еще нужен) идет?
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
![]() |
|
||||
2 Дима_
Я не вижу смысла в велосипедостроении, поскольку уже имеется готовое решение от Майкрософта в виде XAML. Если данные хранить в этом формате, то их визуализация будет происходить автоматом (это же WPF). имхо
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: |
||||
![]() |
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,839
|
2 HWD я тоже не вижу смысла в написании на .Net диалога аналогичного ShaggyDoc'овского, просто Мэтр (как я понял) намекает, что на .Net для этого надо быть "семипядным", а мне кажеться что он (диалог естественно) просто никому не нужен, вот я и спросил - нужен ли он ему (реально, а не "а вот напишите мне - а я посмотрю как у Вас это получится"). Про XAML я естественно знаю, но, допускаю что, может быть нужен именно XML (в определенном формате) - можно его в XAML перевести, либо с TreeView c XmlNode связать - вопрос технически простой.
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
![]() |
|
||||
специалист по околачиванию грушевых деревьев Регистрация: 14.09.2004
Pietari, Venäjä
Сообщений: 811
|
Цитата:
Но уважение теперь забудем однозначно (диски могу вернуть) |
|||
![]() |
|
||||
Вообще-то я тебя в плагиате не обвинял... Ну да ладно, поступай как знаешь.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: |
||||
![]() |
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372
|
Цитата:
Цитата:
|
|||
![]() |
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,839
|
Бррр - у Вас диалог есть, другой Вам не нужен (причем даже с изумлением), мне он не нужен, кому-то другому здесь тоже (по крайней мере никто не говорит - ой я тут делаю, что-то и мне б такой диалог) и для чего его делать?
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
![]() |
|
||||
специалист по околачиванию грушевых деревьев Регистрация: 14.09.2004
Pietari, Venäjä
Сообщений: 811
|
|
|||
![]() |
|
||||
Регистрация: 19.12.2011
Сообщений: 35
|
Не ожидал что тема вызовет такие "дебаты".....
![]() Я долго разбираюсь с вопросом потому что, эта тема интересна мне, и разбираюсь я для себя, а времени между работами, праздниками и домашними делами категорически мало..... Поэтому редко и появлялся..... А язык C# выбран потому что я больше всего имел дела с СИ подобными языками! Поэтому мне удобней их читать, структура программ мне всегда понятней и гибкости языка хватает для большинства задач..... У меня возникла очередная проблема. Код:
После запуска в AutoCADe происходит исключительная ситуация - eDuplicateRecordName Даже и не знаю с какой стороны начинать копать!? Вот весь текст: ************** Exception Text ************** Autodesk.AutoCAD.Runtime.Exception: eDuplicateRecordName at Autodesk.AutoCAD.DatabaseServices.SymbolTable.Add(SymbolTableRecord value) at pr_block.PRINT.blockPrint() in D:\AutoDS\pr_block\pr_block\PRINT.cs:line 32 at Autodesk.AutoCAD.Runtime.CommandClass.InvokeWorker(MethodInfo mi, Object commandObject, Boolean bLispFunction) at Autodesk.AutoCAD.Runtime.CommandClass.InvokeWorkerWithExceptionFilter(MethodInfo mi, Object commandObject, Boolean bLispFunction) at Autodesk.AutoCAD.Runtime.PerDocumentCommandClass.Invoke(MethodInfo mi, Boolean bLispFunction) at Autodesk.AutoCAD.Runtime.CommandClass.CommandThunk.Invoke() Последний раз редактировалось ghost, 16.01.2012 в 13:58. |
|||
![]() |
|
||||
Есть уже блок с именем IBLOCK в таблице блоков, а ты пытаешься его повторно добавить.
__________________
Сообщество программистов Autodesk в СНГ - техническая поддержка |
||||
![]() |
|
||||
Регистрация: 19.12.2011
Сообщений: 35
|
Заработало!
![]() Учту! И обязательно сделаю проверку..... Просто на первом этапе для меня было важно добиться работоспособности скелета, а теперь я его буду "наращивать"! И продолжу ковырять отверткой под названием "Net", гранитный монолит AutoCADa..... ![]() Всем большое спасибо! ![]() |
|||
![]() |
|
||||
это только кличка Регистрация: 22.10.2006
Москва
Сообщений: 252
|
Цитата:
![]() Но не скоро: жизнь удавила напрочь, не до .NET'a мне сейчас.
__________________
...в шее моей жилы железные, и лоб мой - медный... Последний раз редактировалось Pastor, 18.01.2012 в 22:06. |
|||
![]() |
![]() |
|
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Сейсмозащита и сейсмоизоляция существующих, построенных зд. | IANationalInformAgentstvo | Прочее. Архитектура и строительство | 216 | 20.01.2015 16:51 |
Мониторы LCD CRT | Разное | 94 | 17.06.2008 10:51 | |
ЮМОР 2006 =) | Perezz!! | Разное | 1122 | 04.01.2007 00:46 |
Как можно открыть чертеж через LISP на котором стоит пароль? | ivspec | LISP | 7 | 10.02.2006 17:36 |
Можно ли через VBA динамически двигать объекты? | {Smirnoff} | Программирование | 4 | 11.12.2003 01:14 |