65 lines
2.8 KiB
C#
65 lines
2.8 KiB
C#
using System;
|
|
|
|
using Autodesk.Revit.Attributes;
|
|
using Autodesk.Revit.DB;
|
|
using Autodesk.Revit.UI;
|
|
using Autodesk.Revit.UI.Selection;
|
|
|
|
using Nice3point.Revit.Toolkit.External;
|
|
|
|
using ShrlAlgoToolkit.RevitCore.Assists;
|
|
using ShrlAlgoToolkit.Revit.Extensions;
|
|
|
|
namespace ShrlAlgo.Addin.Test;
|
|
[Transaction(TransactionMode.Manual)]
|
|
[Regeneration(RegenerationOption.Manual)]
|
|
public class PlaceInstanceByCircleCmd : ExternalCommand
|
|
{
|
|
public override void Execute()
|
|
{
|
|
Document.Invoke(
|
|
_ =>
|
|
{
|
|
//var id = UiDocument.Selection.GetElementIds().FirstOrDefault();
|
|
//PipingSystemType type = Document.GetElement(id) as PipingSystemType;
|
|
//type.LineColor = Color.InvalidColorValue;
|
|
//var ids = UiDocument.Selection.GetElementIds();
|
|
//foreach (var id in ids)
|
|
//{
|
|
// var elem = Document.GetElement(id) as FamilyInstance;
|
|
// ;
|
|
// ElementTransformUtils.MoveElement(Document, id, elem.FacingOrientation * 121 / 304.8);
|
|
//}
|
|
//return;
|
|
|
|
var refer = UiDocument.Selection.PickObject(ObjectType.Element, "请选择一个实例");
|
|
var familyInstance = Document.GetElement(refer) as FamilyInstance;
|
|
var reference = UiDocument.Selection.PickObject(ObjectType.Element, new FuncFilter(e => e is ImportInstance), "请选择一个实例");
|
|
var importInstance = Document.GetElement(reference);
|
|
|
|
Element elem = Document.GetElement(reference);
|
|
var geoElem = importInstance.get_Geometry(new Options());
|
|
GeometryObject geoObj = elem.GetGeometryObjectFromReference(refer);
|
|
|
|
foreach (var geo in geoElem)
|
|
{
|
|
if (geo is GeometryInstance instance)
|
|
{
|
|
if (!familyInstance.Symbol.IsActive)
|
|
{
|
|
familyInstance.Symbol.Activate();
|
|
}
|
|
var tf = instance.Transform;
|
|
foreach (var geom in instance.GetSymbolGeometry())
|
|
{
|
|
if (geom is Arc arc && arc.IsCyclic && geom.GraphicsStyleId == geoObj.GraphicsStyleId)//( Document.GetElement(item.GraphicsStyleId) as GraphicsStyle).GraphicsStyleCategory.Name == "平面布置"图层名称
|
|
{
|
|
var point = tf.OfPoint(arc.Center);
|
|
Document.Create.NewFamilyInstance(point, familyInstance.Symbol, Document.ActiveView.GenLevel, Document.ActiveView.GenLevel, familyInstance.StructuralType);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}, "创建实例");
|
|
}
|
|
} |