|
@@ -50,20 +50,30 @@ namespace SAGA.MBI.RevitReference
|
|
|
if (fs == null)
|
|
|
{
|
|
|
MessageShowBase.Infomation($"没有找到编码{mode.MEquipBase.EquipClassCode}类型的族,请手动载入后再操作。");
|
|
|
- return Result.Cancelled; }
|
|
|
+ return Result.Cancelled;
|
|
|
+ }
|
|
|
if (IsBasePointFamily(fs))
|
|
|
{
|
|
|
//使用BIMLocation中的坐标,mm转为英寸
|
|
|
XYZ xyz = mode.MEquipBase.Location.ToXyz();
|
|
|
- xyz = xyz==null ? XYZ.Zero : xyz.ConvertToApi();
|
|
|
+ xyz = xyz == null ? XYZ.Zero : xyz.ConvertToApi();
|
|
|
var level = GetCurFloorLevel(doc);
|
|
|
//传标高,z值设置为零
|
|
|
- xyz=xyz.NewZ(0);
|
|
|
+ xyz = xyz.NewZ(0);
|
|
|
fi = doc.Create.NewFamilyInstance(xyz, fs, level, StructuralType.NonStructural);
|
|
|
- mode.MEquipBase.SaveDutyBIMRelation(doc.PathName.GetFileName(),fi.Id.ToString());
|
|
|
+ //假如定位点和中心点不一致,平移设备,将设备中心点移到定位点上
|
|
|
+ XYZ centerXyz = fi.GetLocationPointMBIXYZ().NewZ(0);
|
|
|
+ if (!centerXyz.IsEqual2(xyz))
|
|
|
+ {
|
|
|
+ XYZ vector = xyz - centerXyz;
|
|
|
+ doc.MoveElement(fi.Id, vector);
|
|
|
+ }
|
|
|
+
|
|
|
trans.Commit();
|
|
|
if (fi != null)
|
|
|
{
|
|
|
+ //本地数据库保存岗位和BimId的关系
|
|
|
+ mode.MEquipBase.SaveDutyBIMRelation(doc.PathName.GetFileName(), fi.Id.ToString());
|
|
|
mode.BimId = fi.Id.ToString();
|
|
|
afterAction?.Invoke(fi);
|
|
|
}
|