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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Готовые программы > NET:IronPython для AutoCAD 2006-2009

NET:IronPython для AutoCAD 2006-2009

Ответ
Поиск в этой теме
Непрочитано 09.09.2008, 21:28 #1
NET:IronPython для AutoCAD 2006-2009
Красин
 
Регистрация: 05.09.2008
Сообщений: 24

IronPython для AutoCAD 2006-2009
Распакуйте куда-нибудь папку во вложении

1. Запускаете команду _.netload
2. В этой папке выбираете файл PyAcadDotNet0X.dll, где X – год, соответствующий вашему AutoCAD.
3. Запускаете команду pyfile
4. В диалоге выбираете файл скрипта из папки «примеры»
5. Наслаждаетесь результатом
примечание: если у вас автокад 2007-2009 скрипт можно запускать через Lisp следующим образом (runpyfile "полный путь к файлу скрипта")

Файлы скриптов можно редактировать в бесплатном редакторе Notepad++, который обеспечивает подсветку синтаксиса. Обязательно поставьте опцию отображения пробельных символов, так отступы в Python отделяют друг от друга блоки кода.

LISP
Можно получать передавать и получать значения от IronPython следующим образом:
(runpyfile "полный путь к файлу скрипта" аргумент1 аргумент2 ...)
Примеры таких скриптов лежат в папке «примеры» (lisptest.py, lisptest2.py)

COM
Тем, кто программировал Автокад через COM, используя VBA или Delphi, могут делать то же самое и на IronPython:
У NET.api класса Application есть свойство AcadApplication, которое является корнем COM-модел Автокада.
from Autodesk.AutoCAD.ApplicationServices import Application
app = Application.AcadApplication
doc = app.ActiveDocument
print doc.FullName

ссылку на объект AcadDocument можно получить и следующим образом:
doc = Application.DocumentManager.MdiActiveDocument.AcadDocument

Сборки для взаимодействия с COM : AutoCAD.COM.R16.dll (для 2006) AutoCAD.COM.R17.dll (для 2007-2009)
Прямо ссылаться на них не нужно, но их наличие необходимо. Для применения COM модели нужно знать содержимое сборки.
Содержимое сборок можно посмотреть с помощью NetReflector, который бесплатен и доступен для скачивания в интернете. Можно ориентироваться на VBA-справку в справочной системе Автокада.

ObjectARX.NET API
Скачивайте ObjectARX SDK c сайта Autodesk для своей версии Автокада. Там есть примеры для NET.

Ограничения:
Оператор print выдает вместо кирилицы кракозябры ???? ??? . Приходится пользоваться Editor.WriteMessage
Файлы скриптов должны быть в формате UTF8 для корректного отображения киррилицы в командной строке при использовании
оператора print. (Так как исходный файл PyAcadDotNet прилагается, может кто-нибудь это исправит)
Нельзя работать с реакторами ни через COM, ни через NET.
Нельзя наследовать от arx.net классов.
Пока не существует нормального редактора форм для IronPython. Можно попробовать SharpDevelop + PythonBindings, но эта вещь пока сырая


(также смотри http://code.google.com/p/pyacaddotnet/)

Вложения
Тип файла: zip IronPythonForAcad.zip (1.23 Мб, 426 просмотров)


Последний раз редактировалось Красин, 10.09.2008 в 02:04.
Просмотров: 6432
 
Непрочитано 15.02.2016, 13:05
#2
kubanych


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


как получить доступ через ModelSpace.Item(x) к конкретным line, point, 3dfacе и т.д.?

Код:
[Выделить все]
ac3dFace = 1
acLine = 19
acPoint = 22


doc.Utility.Prompt("\n  объектов "+str(doc.ModelSpace.Count))

points=0
lines=0
faces=0

i=0
while i<doc.ModelSpace.Count:
	ent=doc.ModelSpace.Item(i)

	if ent.EntityType==acPoint:
		points+=1;

	if ent.EntityType==acLine:
		lines+=1;

	if ent.EntityType==ac3dFace:
		faces+=1;
	
	i+=1


doc.Utility.Prompt("\n  точек "+str(points))
doc.Utility.Prompt("\n  линий "+str(lines))
doc.Utility.Prompt("\n  3д фейсов "+str(faces))
kubanych вне форума  
 
Непрочитано 15.02.2016, 13:32
#3
trir


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


через handle
trir вне форума  
 
Непрочитано 18.02.2016, 04:32
#4
kubanych


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


Цитата:
Сообщение от trir Посмотреть сообщение
через handle
В смысле через COM GUID получить доступ к интерфейсу линии и т.д.? Или как? Можете привести пример или ссылку?
kubanych вне форума  
 
Непрочитано 18.02.2016, 07:01
#5
trir


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


http://entercad.ru/acadauto.en/
trir вне форума  
 
Непрочитано 18.02.2016, 20:55
#6
kubanych


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


Цитата:
Сообщение от trir Посмотреть сообщение
Вы имели ввиду свойство Handle объектов?
Но как через handle получить в iron python доступ к Line и другим примитивам с их свойствами?
В Delphi через COM и других статически типизируемых языках я знаю как это делать (даже без Handle напрямую преобраловать
объект в линию),
но тут возникает непонятка с динамической типизацией в iron python
kubanych вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Готовые программы > NET:IronPython для AutoCAD 2006-2009

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ObjectARX. Расчленение и удаление proxy-объектов Profan Готовые программы 293 08.04.2024 09:37
Создание пользовательских кнопок в AutoCAD 2006 Shoorup AutoCAD 54 02.02.2014 21:50
запуск программы из AutoCADа kminas Программирование 19 15.06.2012 13:42
Новый драйвер для Phantom AutoCAD OLE/ADI Printer. Как? CyberMan AutoCAD 4 26.04.2009 10:19
Для архитекторов AutoCAD Architecture, а для конструкторов? Red Nova AutoCAD 35 01.08.2008 16:58