Вы находитесь на странице: 1из 3

Подготовка:

- Создать папку CustomScripts по пути C:\AutoCAD Plant 3D 20ХХ Content\CPak Common\


- Создать в папке CustomScripts текстовый файл TestScript.py

Скрипт:
#--------------------------------------------------------------------------------------------------- 1. Импорт требуемых библиотек
- Библиотека varmain.primitiv служит, видимо, для отрисовки, а varmain.custom - для создания
 #1 именно нестандартных элементов. Можно использовать и другие библиотеки
from varmain.primitiv import *
from varmain.custom import *
2. Описание метаинформации для Plant 3D
#2
Программе Plant 3d требуется рассказать, какие переменные, требуемые функции рисования,
@activate(Group="Valve", Ports="2", TooltipShort="Test script",
следует хранить в базе данных, показывать пользователю и запрашивать у пользователя при
TooltipLong="This is a custom Testscript", LengthUnit="mm")
заполнении каталога. Если в вашей функции у переменных есть значения по-умолчанию, вы,
@group("MainDimensions")
возможно, не заметите отсутствия переменной в интерфейсе программы. Разве что размеры
@param(DN1=LENGTH, TooltipLong="Length of the Cylinder")
отрисованных тел будут одинаковыми там, где используется эта переменная.
@param(DN2=LENGTH, TooltipLong="Length of the Cylinder")
Строка @activate говорит программе, что за элемент мы создаем.
@param(D=LENGTH, TooltipShort="Cylinder Diameter", Ask4Dist=True)
Строка @group("MainDimensions") обозначает начало списка параметров.
@param(L=LENGTH, TooltipLong="Length of the Cylinder")
Строка @param(DN1=LENGTH, TooltipLong="Length of the Cylinder") - это параметр. В данном
@param(OF=LENGTH0)
случае, параметр DN1 с подсказкой, которая будет появляться в редакторе каталогов, "Length of the
@group(Name="meaningless enum")
Cylinder".
@param(K=ENUM)
Назначение группы параметров @group(Name="meaningless enum") мне пока непонятно. В
@enum(1, "align X")
инструкции говорится, что этот нумератор указывает вдоль какой оси чертить элемент
@enum(2, "align Y")
@enum(3, "align Z")

#3 3. Рисовалка
def TESTSCRIPT(s,DN1=30.0, DN2=50.0, D=80.0, L=150.0, OF=-1, K=1, **kw): Вычерчивание модели элемента происходит с помощью примитивов, с которыми можно
   o1=CYLINDER(s, R=DN1/2, H=L, O=0.0).rotateY(90) производить операции сложения, вычитания и пересечения.
   o2=CONE(s, R1=DN2/2, R2=0, H=L, E=0)
   o1.uniteWith(o2)
   o2.erase()
   s.setPoint((0,0,0),(-1,0,0))
   s.setPoint((L,0,0),(1,0,0))
#--------------------------------------------------------------------------------------------------

Регистрация скрипта:
Прежде чем приступить к тестированию, скрипт должен быть зарегистрирован. Это выполняется с помощью команды
PLANTREGISTERCUSTOMSCRIPTS. При вызове этой команды происходит следущее:
1. Файл скрипта компилируется и создается файл .pyc (в нашем случае TESTSCRIPT.pyc) в папке CustomScripts
2. Метаданные о скрипте вносятся в файл ScriptGroup.xml. Если этот файл отсутствует - он создается. Этот файл содержит информацию о
всех созданных нестандартных скриптах и к каким группам они относятся.
3. Создается файл TestScript.xml в папке CustomScripts. Этот файл содержит метаданные о скрипте и используемых в нем переменных.
4. Создается или обновляется файл variants.xml. Он содержит подсказки скрипта, используемых в нем параметров, значения нумераторов.
5. Создается или обновляется файл variants.map. Содержит служебную информацию.
О правильности сработанной команды говорит отсутствие ошибок в командной строке, а также вновь созданные файлы (либо время файлов
обновлено на момент выполнения команды) в папке со скриптом.
Пример ошибки:
SyntaxError: Non-ASCII character '\xd0' in file c:\autocad plant 3d 2014 content\cpak common\customscripts\TESTSCRIPT.py on line 1, but no encoding
declared; see http://www.python.org/peps/pep-0263.html for details
Данная ошибка говорит о наличии кириллицы в тексте скрипта

Тестирование скрипта:
Для тестирования скриптов на Python в Plant 3d используется библиотека "PnP3dACPAdapter.arx". Для её загрузки можно использовать команду
_appload в командной строке Autocad, использовать меню или ленту, или команду lisp: (arxload "PnP3dACPAdapter.arx")
Важно: вводить команду со скобками!

Только после загрузки этой библиотеки можно проводить тестирование скрипта. Для этого используется команда lisp TESTACPSCRIPT
(TESTACPSCRIPT "TESTSCRIPT") Без параметров
(TESTACPSCRIPT "TESTSCRIPT" "D1" "300.5") С параметрами

Важно: вводить команду со скобками!

Последовательность действий при тестировании скриптов:


1.Внести изменения в файл ХХХХХ.py
2. Открыть Plant 3D
3. Выполнить команду PLANTREGISTERCUSTOMSCRIPTS
4. Закрыть Plant 3D
5. Открыть Plant 3D
6. Загрузить библиотеку для тестирования. (arxload "PnP3dACPAdapter.arx")
7. Выполнить скрипт (TESTACPSCRIPT "TESTSCRIPT")
Если скрипт требует доработки, повторить с пункта 1 (если вносить изменения в скрипт не закрывая Plant 3D, то шаг 2 можно исключить).

Создание скриншотов:
Для создания изображений тела или блок в Plant 3D служит команда PlantSnapShot. После её запуска следует указать, что нам нужен снимок
детали, далее выбрать саму деталь, указать размер снимка и сохранить его в png с тем же именем, что и файл скрипта + окончание в зависимости от
размера снимка. Например:
TESTSCRIPT_32.png
TESTSCRIPT_64.png
TESTSCRIPT_200.png
При создания эскиза детали для отображался в редакторе каталогов на странице с типоразмерами, следует его сохранить в размере 640px.
Соответственно, название файла будет выглядеть так:
TESTSCRIPT_640.png
Для того чтобы на эскизе стояли размеры необходимо проставить их вручную, изменив размер стрелок и высоту текста. Далее фон экрана
перенастроить на белый (Параметры-Экран-Цвета-Пространство модели-Однородный фон). Сделать Скриншот и отредактировать эскиз в
графическом редакторе.

Источники с информацией:
http://aucache.autodesk.com/au2011/sessions/4214/datasets/v1_PD4214-L_Radhakrishnan_AnnexB_Custom%20Script%20Handout.pdf
http://pleshkoviv.blogspot.ru/2013/06/autocad-plant-3d-python.html
http://adndevblog.typepad.com/autocad/plant3d/ (5 уроков)