revit二次开发——从族实例中取得几何信息
1、可以从族实例中获得面、获得边、获得线、获得点,方法如下
using System ;
using System . Collections . Generic ;
using System . Linq ;
using System . Text ;
using System . Threading . Tasks ;
using Autodesk . Revit . UI ;
using Autodesk . Revit . DB ;
using Autodesk . Revit . UI . Selection ;
using Autodesk . Revit . ApplicationServices ;
namespace 从族实例中获得几何信息
{
[ Autodesk . Revit . Attributes . Transaction ( Autodesk . Revit . Attributes . TransactionMode . Manual )]
[ Autodesk . Revit . Attributes . Journaling ( Autodesk . Revit . Attributes . JournalingMode . NoCommandData )]
[ Autodesk . Revit . Attributes . Regeneration ( Autodesk . Revit . Attributes . RegenerationOption . Manual )]
public class Class1 : IExternalCommand
{
public Result Execute ( ExternalCommandData commandData , ref string message , ElementSet elements )
{
Document revitDoc = commandData . Application . ActiveUIDocument . Document ; //取得文档
Application revitApp = commandData . Application . Application ; //取得应用程序
UIDocument uiDoc = commandData . Application . ActiveUIDocument ;
Selection sel = uiDoc . Selection ;
Reference ref1 = sel . PickObject ( ObjectType . Element , "选择一个族实例" );
Element elem = revitDoc . GetElement ( ref1 );
FamilyInstance familyInstance = elem as FamilyInstance ;
Options opt = new Options ();
opt . ComputeReferences = true ;
opt . DetailLevel = ViewDetailLevel . Fine ;
GeometryElement e = familyInstance .get_Geometry( opt );
foreach ( GeometryObject obj in e )
{
GeometryInstance geoInstance = obj as GeometryInstance ;
GeometryElement geoElement = geoInstance . GetInstanceGeometry ();
Transform insTransform = geoInstance . Transform ;
foreach ( GeometryObject obj2 in geoElement )
{
Solid solid2 = obj2 as Solid ;
if ( solid2 . Faces . Size > 0)
{
//FindBottomFace(solid2);
//FindEdge(solid2);
//FindLine(solid2);
//FindPoint(solid2);
transformPointAndUaPoint ( solid2 , insTransform );
TaskDialog . Show ( "呵呵" , "在这里" );
}
}
}
return Result . Succeeded ;
}
///
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
