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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Dinamo/Python/Revit. Вставка экземпляра семейства по грани другого семейства.

Dinamo/Python/Revit. Вставка экземпляра семейства по грани другого семейства.

Ответ
Поиск в этой теме
Непрочитано 29.12.2018, 15:09 #1
Dinamo/Python/Revit. Вставка экземпляра семейства по грани другого семейства.
AlexV
 
Инженер
 
С-Пб
Регистрация: 02.10.2008
Сообщений: 3,640

Наваял на коленке скрипт в динамо для вставки каркаса в буронесущую сваю методом тыка/копи-паста. Пользователь "тыкает" в сваю (загружаемое семейство), скрипт вынимает из оной значения параметров (длина/диаметр и т.д.), вставляет каркас и назначает соответствующие значения параметров каркасу.


При вставке через базовую точку (newobj = doc.Create.NewFamilyInstance(point.ToXyz(),famtype,ST)) - все работает.
Однако, семейство каркаса - "на основе рабочей плоскости, по идее, должно вставляться "по грани", через методы NewFamilyInstance Method (Face, XYZ, XYZ, FamilySymbol) либо NewFamilyInstance Method (Face, Line, FamilySymbol).

Код:
[Выделить все]
public FamilyInstance NewFamilyInstance(
	Face face,
	XYZ location,
	XYZ referenceDirection,
	FamilySymbol symbol
)
вот питонокод, на входе In[0] - базовая точка (центр низа сваи), In[1] - тип семейства каркаса, In[2] - In[3] - значения параметров экземпляра сваи (ну их можно и внутри кода снимать, но пока так), In[4] - выбранный экземпляр семейства сваи, In[5] -




Код:
[Выделить все]
import clr
clr.AddReference('RevitAPI')
from Autodesk.Revit.DB import *
clr.AddReference("RevitNodes")
import Revit
clr.ImportExtensions(Revit.Elements)
clr.ImportExtensions(Revit.GeometryConversion)
clr.AddReference("RevitServices")
import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager
from Autodesk.Revit.DB.Structure import *
clr.AddReference('RevitAPIUI')
from Autodesk.Revit.UI import * 
clr.AddReference('RevitNodes')
# импорт и работа с геометрией Dynamo
clr.AddReference('ProtoGeometry')
from Autodesk.DesignScript.Geometry import *
doc = DocumentManager.Instance.CurrentDBDocument
point = UnwrapElement(IN[0])
point1 = UnwrapElement(IN[0])
famtype = UnwrapElement(IN[1])
rplosk = UnwrapElement(IN[5])
dir1 = UnwrapElement(IN[6])
elementlist = list()
ST = StructuralType.NonStructural
TransactionManager.Instance.EnsureInTransaction(doc)
newobj=doc.Create.NewFamilyInstance(rplosk,point.ToXyz(),dir1,famtype)
p=newobj.LookupParameter("Диаметр сваи")
p.Set(float(IN[2]/304.8))
pp=newobj.LookupParameter("L")
pp.Set(float((IN[3]+600)/304.8))
ppp=newobj.LookupParameter("Выпуск")
ppp.Set(float((600)/304.8))
pppp=newobj.LookupParameter("Смещение")
pppp.Set(float(-(IN[3])/304.8))
ppppp=newobj.LookupParameter("Рабочая плоскость")
newobj.ToDSType(True)
elementlist.append(newobj)
TransactionManager.Instance.TransactionTaskDone()
OUT = elementlist[0]


Вопрос - как определять в данной ситуации параметры XYZ location/XYZ referenceDirection? Ну, на XYZ location я посылаю базовую точку сваи, и вроде как питон доволен. А вот откуда взять XYZ referenceDirection-
Цитата:
"Вектор, определяющий направление экземпляра семейства. Обратите внимание, что это направление определяет поворот экземпляра на грани и, следовательно, не может быть параллельным нормали грани."
?

Миниатюры
Нажмите на изображение для увеличения
Название: Безымянный.png
Просмотров: 294
Размер:	41.5 Кб
ID:	209485  

Вложения
Тип файла: zip каркас в сваю.zip (1.34 Мб, 8 просмотров)

__________________
...Не пытайся гнуть ты ложку,
Не вяжи её узлом.
Ложка - ложка понарошку,
А по правде, - это лом!

Последний раз редактировалось Кулик Алексей aka kpblc, 29.12.2018 в 15:46.
Просмотров: 1726
 
Непрочитано 02.01.2019, 23:47
#2
DEM

YngIngKllr
 
Регистрация: 29.03.2005
СПб
Сообщений: 12,762


Саня ну нафига тебе динамо...
Сколько уже говорю переходи на net.
__________________
Шаг 12й......
Мои публикации
DEM вне форума  
 
Непрочитано 03.01.2019, 07:25
#3
Boxa

КЖ; C#
 
Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 1,960


Про сваю не скажу, надо смотреть, что там за семейство, но когда использовал Create.NewFamilyInstance для создания дырок в стене, то в XYZ referenceDirection затолкал нормализованный вектор, перпендикулярный вектору стены и все прокатило...


Цитата:
Сообщение от DEM Посмотреть сообщение
Саня ну нафига тебе динамо...
Сколько уже говорю переходи на net.
я не сильно углублялся в анализ кодов на питоне и с#, но у меня сложилось впечатление, что они используют одно API, если это так, то смысл?... да и сам подход к написанию программ под ревит... нда, надо еще посмотреть и почитать...
__________________
_бложиг
Boxa вне форума  
 
Непрочитано 03.01.2019, 23:45
#4
DEM

YngIngKllr
 
Регистрация: 29.03.2005
СПб
Сообщений: 12,762


Цитата:
Сообщение от Boxa Посмотреть сообщение
я не сильно углублялся в анализ кодов на питоне и с#, но у меня сложилось впечатление, что они используют одно API, если это так, то смысл?... да и сам подход к написанию программ под ревит... нда, надо еще посмотреть и почитать...
Да апи-шка одна фактически.
Но динамо скрипты надо из плейра запускать, а net можно и свои кнопочки добавлять и т.п.
Можно конечно скрипты использовать, но нафига...
__________________
Шаг 12й......
Мои публикации
DEM вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Dinamo/Python/Revit. Вставка экземпляра семейства по грани другого семейства.

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Возможна ли вставка вида модели одного файла в лист другого файла без использования подшивок? bboysyndrom AutoCAD 6 01.02.2018 10:25
Анкерный болт на основе типового семейства по грани не хочет прилипать к верху фундаментной плиты Tyhig Revit 2 15.04.2016 10:01
Вставка в текущий чертеж другого чертежа с исходными координатми Browning Zed AutoCAD 7 26.02.2014 14:04
Revit 2012: крякозябли в окне выбора экземпляра из семейства 4007 Revit 7 04.05.2012 13:25
Вставка в поле части содержимого другого поля n0str0m0 AutoCAD 9 03.12.2010 13:46