科协网站建设的建议,在线广告设计制作,深圳宝安区是什么风险,松原网页制作招聘标题如何在ObjectARX或。net中访问AutoCAD实体的子实体?
下面是c和c#中的两个示例#xff0c;它们演示了如何访问AssocPersSubentityIdPE并使用它遍历所选实体的顶点和边缘。
void ArxSubEntityPE(){Acad::ErrorStatus err;ads_name name;ads_point pt;if(acedEntSel(L和c#中的两个示例它们演示了如何访问AssocPersSubentityIdPE并使用它遍历所选实体的顶点和边缘。
void ArxSubEntityPE(){Acad::ErrorStatus err;ads_name name;ads_point pt;if(acedEntSel(L\nSelect an Entity: , name, pt) ! RTNORM)return;AcDbObjectId id;acdbGetObjectId(id, name);AcDbObjectPointer AcDbEntity pEntity(id, AcDb::kForRead);// Get the Protocol extension associated with the entityAcDbAssocPersSubentIdPE* const pAssocPersSubentIdPE AcDbAssocPersSubentIdPE::cast(pEntity-queryX(AcDbAssocPersSubentIdPE::desc()));if( pAssocPersSubentIdPE NULL)return;AcArray AcDbSubentId vertexIds;pAssocPersSubentIdPE-getAllSubentities(pEntity,AcDb::kVertexSubentType,vertexIds);acutPrintf(L\n- Vertex Subentities: );for (int i 0; ivertexIds.length(); i){AcDbFullSubentPath path(id, vertexIds[i]);AcDbPoint* pPoint AcDbPoint::cast(pEntity-subentPtr(path));if (pPoint ! NULL){AcGePoint3d pos pPoint-position();acutPrintf(L\n . Vertex: [%.2f, %.2f, %.2f],pos.x, pos.y, pos.z);delete pPoint;}}AcArray AcDbSubentId edgeIds;pAssocPersSubentIdPE-getAllSubentities(pEntity,AcDb::kEdgeSubentType,edgeIds);acutPrintf(L\n- Edge Subentities: );for (int i 0; iedgeIds.length(); i){AcDbFullSubentPath path(id, edgeIds[i]);AcDbEntity* pSubEntity pEntity-subentPtr(path);if (pSubEntity ! NULL){acutPrintf(L\n . %s (Id %d),pSubEntity-isA()-name(),edgeIds[i].index());delete pSubEntity;}}}
[CommandMethod(SubEntityPE)]public void SubEntityPE(){Document doc Application.DocumentManager.MdiActiveDocument;Database db doc.Database;Editor ed doc.Editor;PromptEntityOptions peo new PromptEntityOptions(\nSelect an Entity: );PromptEntityResult per ed.GetEntity(peo);if (per.Status ! PromptStatus.OK)return; using (Transaction Tx db.TransactionManager.StartTransaction()){Entity entity Tx.GetObject(per.ObjectId, OpenMode.ForRead)as Entity;ObjectId[] entId new ObjectId[] { entity.ObjectId };IntPtr pSubentityIdPE entity.QueryX(AssocPersSubentityIdPE.GetClass(typeof(AssocPersSubentityIdPE)));if (pSubentityIdPE IntPtr.Zero)//Entity doesnt support the subentityPEreturn;AssocPersSubentityIdPE subentityIdPE AssocPersSubentityIdPE.Create(pSubentityIdPE, false)as AssocPersSubentityIdPE;SubentityId[] vertexIds subentityIdPE.GetAllSubentities(entity,SubentityType.Vertex);ed.WriteMessage(\n- Vertex Subentities: );foreach (SubentityId subentId in vertexIds){FullSubentityPath path new FullSubentityPath(entId, subentId);DBPoint vertex entity.GetSubentity(path) as DBPoint;if (vertex ! null){ed.WriteMessage(\n . Vertex: [{0}, {1}, {2}],vertex.Position.X,vertex.Position.Y,vertex.Position.Z);vertex.Dispose();}}SubentityId[] edgeIds subentityIdPE.GetAllSubentities(entity,SubentityType.Edge);ed.WriteMessage(\n- Edge Subentities: );foreach (SubentityId subentId in edgeIds){FullSubentityPath path new FullSubentityPath(entId, subentId);Entity edgeEntity entity.GetSubentity(path);if (edgeEntity ! null){ed.WriteMessage(\n . edgeEntity.ToString());edgeEntity.Dispose();}}SubentityId[] faceIds subentityIdPE.GetAllSubentities(entity,SubentityType.Face);ed.WriteMessage(\n- Face Subentities: );foreach (SubentityId subentId in faceIds){FullSubentityPath path new FullSubentityPath(entId, subentId);Entity faceEntity entity.GetSubentity(path);if (faceEntity ! null){ed.WriteMessage(\n . faceEntity.ToString());faceEntity.Dispose();}}}}