Скрипт:
#--------------------------------------------------------------------------------------------------- 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") С параметрами
Создание скриншотов:
Для создания изображений тела или блок в 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 уроков)