• Revit SDK 内容摘要: 9.0 - 9.1


    前提

    不包含已单独写博客部分。

    Revit SDK Samples

    9.0

    AllViews
    创建图纸,并放置视图。

    ViewSheet sheet = ViewSheet.Create(doc, m_titleBlock.Id);
    double xDistance = 0;
    double yDistance = 0;
    CalculateDistance(sheet.Outline, views.Size, ref xDistance, ref yDistance);
    
    Autodesk.Revit.DB.UV origin = GetOffSet(sheet.Outline, xDistance, yDistance);
    double tempU = origin.U;
    double tempV = origin.V;
    int n = 1;
    foreach (Autodesk.Revit.DB.View v in views) {
       Autodesk.Revit.DB.UV location = new Autodesk.Revit.DB.UV(tempU, tempV);
       Autodesk.Revit.DB.View view = v;
       Rescale(view, xDistance, yDistance);
       Viewport.Create(view.Document, sheet.Id, view.Id, new XYZ(location.U, location.V, 0));
       if (0 != n++ % m_rows) {
          tempU = tempU + xDistance * (1 - TITLEBAR);
       } else {
          tempU = origin.U;
          tempV = tempV + yDistance;
       }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    AnalyticalSupportData_Info
    在这里插入图片描述
    获取 Support Type 的逻辑:

    AnalyticalModel analyticalModel = element.GetAnalyticalModel();
    string[] supportInformations = new string[2] { "", "" };
    IList<AnalyticalModelSupport> supports = analyticalModel.GetAnalyticalModelSupports();
    if (!analyticalModel.IsElementFullySupported()) {
       if (0 == supports.Count) {
          supportInformations[0] = "not supported";
       } else {
          foreach (AnalyticalModelSupport support in supports) {
             supportInformations[0] = supportInformations[0] + support.GetSupportType().ToString() + ", ";
          }
       }
    } else {
       if (0 == supports.Count) {
          supportInformations[1] = "supported but no more information";
       } else {
          foreach (AnalyticalModelSupport support in supports) {
          supportInformations[0] = supportInformations[0] + support.GetSupportType().ToString() + ", ";
       }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    AreaReinCurve
    AreaReinforcement 区域钢筋,参考官方文档
    下面是获取区域钢筋的曲线,其它都是设置参数 Parameter

    AreaReinforcement m_areaRein = areaReinforcement;
    CurveArray curves = new CurveArray();
    List<AreaReinforcementCurve> m_areaReinCurves = new List<AreaReinforcementCurve>();
    IList<ElementId> curveIds = m_areaRein.GetBoundaryCurveIds();
    foreach (ElementId o in curveIds) {
       AreaReinforcementCurve areaCurve = m_doc.GetElement(o) as AreaReinforcementCurve;
       m_areaReinCurves.Add(areaCurve);
       curves.Append(areaCurve.Curve);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    AreaReinParameters
    钢筋弯钩,参考文档

    namespace Autodesk.Revit.DB.Structure
    {
        public class RebarHookType : ElementType
        {
            public double StraightLineMultiplier { get; set; }
            public double HookAngle { get; set; }
            public RebarStyle Style { get; set; }
            public static RebarHookType Create(Document doc, double angle, double multiplier);
            public static ElementId CreateDefaultRebarHookType(Document ADoc);
            public double GetDefaultHookExtension(double barDiameter);
            public double GetHookExtensionLength(RebarBarType barType);
            public bool IsOffsetLengthRequired();
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    namespace Autodesk.Revit.DB.Structure
    {
        public class RebarBarType : ElementType
        {
            public double MaximumBendRadius { get; set; }
            public double StandardBendDiameter { get; set; }
            public double StandardHookBendDiameter { get; set; }
            public double StirrupTieBendDiameter { get; set; }
            public double BarDiameter { get; set; }
            public RebarDeformationType DeformationType { get; set; }
            public static RebarBarType Create(Document ADoc);
            public static ElementId CreateDefaultRebarBarType(Document ADoc);
            public bool GetAutoCalcHookLengths(ElementId hookId);
            public double GetHookLength(ElementId hookId);
            public double GetHookOffsetLength(ElementId hookId);
            public bool GetHookPermission(ElementId hookId);
            public double GetHookTangentLength(ElementId hookId);
            public RebarRoundingManager GetReinforcementRoundingManager();
            public void SetAutoCalcHookLengths(ElementId hookId, bool autoCalculated);
            public void SetBarTypeDiameters(BarTypeDiameterOptions diametersOptions);
            public void SetHookLength(ElementId hookId, double hookLength);
            public void SetHookOffsetLength(ElementId hookId, double newLength);
            public void SetHookPermission(ElementId hookId, bool permission);
            public void SetHookTangentLength(ElementId hookId, double newLength);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26

    BeamAndSlabNewParameter
    添加共享参数:

    DefinitionFile informationFile = AccessOrCreateExternalSharedParameterFile();
    DefinitionGroups informationCollections = informationFile.Groups;
    DefinitionGroup  informationCollection  = null;
    informationCollection = informationCollections.get_Item("MyParameters");
    informationCollections.Create("MyParameters");
    informationCollection = informationCollections.get_Item("MyParameters");
    Definition information = informationCollection.Definitions.get_Item("Unique ID");
                    
    if (null == information) {
       ExternalDefinitionCreationOptions ExternalDefinitionCreationOptions = new ExternalDefinitionCreationOptions("Unique ID", Autodesk.Revit.DB.ParameterType.Text);
       informationCollection.Definitions.Create(ExternalDefinitionCreationOptions);
       information = informationCollection.Definitions.get_Item("Unique ID");
    }
    
    CategorySet categories              = m_revit.Application.Create.NewCategorySet();
    Category structuralFramingCategorie = null;
    Category floorsClassification       = null;
    
    // use category in instead of the string name to get category 
    structuralFramingCategorie = m_revit.ActiveUIDocument.Document.Settings.Categories.get_Item(BuiltInCategory.OST_StructuralFraming);
    floorsClassification = m_revit.ActiveUIDocument.Document.Settings.Categories.get_Item(BuiltInCategory.OST_Floors);
    categories.Insert(structuralFramingCategorie);
    categories.Insert(floorsClassification);
    
    InstanceBinding caseTying = m_revit.Application.Create.NewInstanceBinding(categories);
    bool boundResult = m_revit.ActiveUIDocument.Document.ParameterBindings.Insert(information, caseTying);    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26

    CreateBeamsColumnsBraces
    创建支撑 Brace - 关于支撑,参考官方文档

    STRUCTURALTYPE structuralType = Autodesk.Revit.DB.Structure.StructuralType.Brace;
    Line line1 = Line.CreateBound(startPoint, middlePoint);
    if (!braceType.IsActive)
       braceType.Activate();
    FamilyInstance firstBrace = m_revit.ActiveUIDocument.Document.Create.NewFamilyInstance(line1, braceType, baseLevel, structuralType);
    
    • 1
    • 2
    • 3
    • 4
    • 5

    创建梁 Beam:

    Line line = Line.CreateBound(startPoint, endPoint);
    STRUCTURALTYPE structuralType = Autodesk.Revit.DB.Structure.StructuralType.Beam;
    if (!beamType.IsActive)
       beamType.Activate();
    m_revit.ActiveUIDocument.Document.Create.NewFamilyInstance(line, beamType, topLevel, structuralType);
    
    • 1
    • 2
    • 3
    • 4
    • 5

    CreateComplexAreaRein

    ElementId areaReinforcementTypeId = AreaReinforcementType.CreateDefaultAreaReinforcementType(revit.Application.ActiveUIDocument.Document);
    ElementId rebarBarTypeId = RebarBarType.CreateDefaultRebarBarType(revit.Application.ActiveUIDocument.Document);
    ElementId rebarHookTypeId = RebarHookType.CreateDefaultRebarHookType(revit.Application.ActiveUIDocument.Document);
    AreaReinforcement areaRein = AreaReinforcement.Create(revit.Application.ActiveUIDocument.Document, floor, curves, majorDirection, areaReinforcementTypeId, rebarBarTypeId, rebarHookTypeId);
    
    • 1
    • 2
    • 3
    • 4
    private void ChangeAreaReinCurves(AreaReinforcement areaRein){
       //interior 4 curves are listed in the back of the curves, 
       //this order is decided when we create it
       IList<ElementId> curveIds = areaRein.GetBoundaryCurveIds();
       for (int i = 4; i < 8; i++) {
          AreaReinforcementCurve areaReinCurve = m_doc.GetElement(curveIds[i]) as AreaReinforcementCurve;
          //remove hooks, set the hook the top 2 layers to 'up'
          ParameterUtil.SetParaInt(areaReinCurve, BuiltInParameter.REBAR_SYSTEM_OVERRIDE, -1);
          ParameterUtil.SetParaInt(areaReinCurve, BuiltInParameter.REBAR_SYSTEM_HOOK_ORIENT_TOP_DIR_1, (int)HookOrientation.Up);
          ParameterUtil.SetParaInt(areaReinCurve, BuiltInParameter.REBAR_SYSTEM_HOOK_ORIENT_TOP_DIR_2, (int)HookOrientation.Up);
       }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    CreateDimensions

    Autodesk.Revit.UI.UIApplication app = m_revit.Application;
    Document doc = app.ActiveUIDocument.Document;
    
    Autodesk.Revit.DB.XYZ p1 = new XYZ(
                            newLine.GetEndPoint(0).X + 5,
                            newLine.GetEndPoint(0).Y + 5,
                            newLine.GetEndPoint(0).Z);
    Autodesk.Revit.DB.XYZ p2 = new XYZ(
                            newLine.GetEndPoint(1).X + 5,
                            newLine.GetEndPoint(1).Y + 5,
                            newLine.GetEndPoint(1).Z);
    
    Line newLine2 = Line.CreateBound(p1, p2);
    Dimension newDimension = doc.Create.NewDimension( doc.ActiveView, newLine2, referenceArray);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    CreateSimpleAreaRein
    创建及设置对应参数。

    CreateViewSection

    namespace Autodesk.Revit.DB
    {
        public class ViewSection : View
        {
            public static View CreateCallout(Document document, ElementId parentViewId, ElementId viewFamilyTypeId, XYZ point1, XYZ point2);
            public static ViewSection CreateDetail(Document document, ElementId viewFamilyTypeId, BoundingBoxXYZ sectionBox);
            public static void CreateReferenceCallout(Document document, ElementId parentViewId, ElementId viewIdToReference, XYZ point1, XYZ point2);
            public static void CreateReferenceSection(Document document, ElementId parentViewId, ElementId viewIdToReference, XYZ headPoint, XYZ tailPoint);
            public static ViewSection CreateSection(Document document, ElementId viewFamilyTypeId, BoundingBoxXYZ sectionBox);
            public static bool IsParentViewValidForCallout(Document document, ElementId parentViewId);
            public static bool IsViewFamilyTypeValidForCallout(Document document, ElementId viewFamilyTypeId, ElementId parentViewId);
            public bool IsSplitSection();
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    CreateWallinBeamProfile
    CreateWallsUnderBeams
    DeleteDimensions
    DeleteObject
    简单例子,后续补充,略。

    DesignOptionReader
    VB,略。

    GenerateFloor
    创建楼板:

    doc.Create.NewFloor(data.Profile, data.FloorType, data.Level, data.Structural);
    
    • 1

    InPlaceMembers
    内建图元 - In-Place Family,参考官方文档

    LevelsProperty

    namespace Autodesk.Revit.DB
    {
        public class Level : DatumPlane
        {
            public double Elevation { get; set; }
            public static Level Create(Document document, double elevation);
            public ElementId FindAssociatedPlanViewId();
            public Reference GetPlaneReference();
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    Loads
    载荷,参考官方文档

    MaterialProperties
    参考,Revit API: Material 材质

    ObjectViewer
    PhaseSample
    SlabProperties
    StructuralLayerFunction
    通过参数查询例子,后续补充,略。

    RotateFramingObjects

                   // if be familyInstance,judge the types of familyInstance
                   if (StructuralType.Beam == familyComponent.StructuralType
                      || StructuralType.Brace == familyComponent.StructuralType)
                   {
                      // selection is a beam or Brace
                      ParameterSetIterator paraIterator = familyComponent.Parameters.ForwardIterator();
                      paraIterator.Reset();
    
                      while (paraIterator.MoveNext())
                      {
                         object para = paraIterator.Current;
                         Parameter objectAttribute = para as Parameter;
                         //set generic property named "Cross-Section Rotation"                           
                         if (objectAttribute.Definition.Name.Equals(AngleDefinitionName))
                         {
                            Double originDegree = objectAttribute.AsDouble();
                            double rotateDegree = m_receiveRotationTextBox * Math.PI / 180;
                            if (!m_isAbsoluteChecked)
                            {
                               // absolute rotation
                               rotateDegree += originDegree;
                            }
                            objectAttribute.Set(rotateDegree);
                            // relative rotation
                         }
                      }
                   }
                   else if (StructuralType.Column == familyComponent.StructuralType)
                   {
                      // rotate a column
                      Autodesk.Revit.DB.Location columnLocation = familyComponent.Location;
                      // get the location object
                      LocationPoint pointLocation = columnLocation as LocationPoint;
                      Autodesk.Revit.DB.XYZ insertPoint = pointLocation.Point;
                      // get the location point
                      double temp = pointLocation.Rotation;
                      //existing rotation
                      Autodesk.Revit.DB.XYZ directionPoint = new Autodesk.Revit.DB.XYZ(0, 0, 1);
                      // define the vector of axis
                      Line rotateAxis = Line.CreateUnbound(insertPoint, directionPoint);
                      double rotateDegree = m_receiveRotationTextBox * Math.PI / 180;
                      // rotate column by rotate method
                      if (m_isAbsoluteChecked)
                      {
                         rotateDegree -= temp;
                      }
                      bool rotateResult = pointLocation.Rotate(rotateAxis, rotateDegree);
                      if (rotateResult == false)
                      {
                         TaskDialog.Show("Revit", "Rotate Failed.");
                      }
                   }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52

    VersionChecking

    Application revitApplication = revit.Application.Application;
    
    // get product name, version number and build number information
    // via corresponding Properties of Autodesk.Revit.ApplicationServices.Application class
    m_productName = revitApplication.VersionName;
    m_version     = revitApplication.VersionNumber;
    m_buildNumber = revitApplication.VersionBuild;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    9.1

    BoundaryConditions
    边界条件,参考官方文档介绍

    // invoke Document.NewPointBoundaryConditions Method 
    Autodesk.Revit.DB.Structure.BoundaryConditions createdBC = 
       createDoc.NewPointBoundaryConditions(endReference, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
    // invoke Document.NewLineBoundaryConditions Method
    Autodesk.Revit.DB.Structure.BoundaryConditions createdBC = 
       createDoc.NewLineBoundaryConditions(hostElement.GetAnalyticalModel(), 0, 0, 0, 0, 0, 0, 0, 0);
    // invoke Document.NewAreaBoundaryConditions Method
    Autodesk.Revit.DB.Structure.BoundaryConditions createdBC =
       createDoc.NewAreaBoundaryConditions(hostElement.GetAnalyticalModel(), 0, 0, 0, 0, 0, 0);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    CreateBeamSystem
    有关梁系统,参考官方文档

    public void CreateBeamSystem() {
       Document document = m_data.CommandData.Application.ActiveUIDocument.Document;
       // create curve array and insert Lines in order
       IList<Curve> curves = new List<Curve>();
       foreach (Line line in m_data.Lines) {
          curves.Add(line);
       }
       // create beam system takes closed profile consist of lines
       BeamSystem aBeamSystem = BeamSystem.Create(document, curves, document.ActiveView.SketchPlane, 0);
       // set created beam system's layout rule and beam type property
       aBeamSystem.LayoutRule = m_data.Param.Layout;
       aBeamSystem.BeamType = m_data.Param.BeamType;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    FoundationSlab
    创建基础底板,参考官方文档
    FoundationSlab 是一种楼板,只是类型有区别。

    Floor foundationSlab = m_revit.ActiveUIDocument.Document.Create.NewFoundationSlab(
                    slab.OctagonalProfile, m_foundationSlabType, m_levelList.Values[0],
                    true, normal);
    
    • 1
    • 2
    • 3

    判断楼板是否是基础底板:

    public void GetInfo_FloorType(FloorType floorType)
    {
        string message;
        // Get whether FloorType is a foundation slab
        message = "If is foundation slab : " + floorType.IsFoundationSlab;
        TaskDialog.Show("Revit",message);
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    FrameBuilder
    创建由柱梁等组成的框架系统。

          public void CreateFraming()
          {
             Transaction t = new Transaction(m_data.CommandData.Application.ActiveUIDocument.Document, Guid.NewGuid().GetHashCode().ToString());
             t.Start();
             m_data.UpdateLevels();
             List<FamilyInstance> frameElems = new List<FamilyInstance>();
             Autodesk.Revit.DB.UV[,] matrixUV = CreateMatrix(m_data.XNumber, m_data.YNumber, m_data.Distance);
    
             // iterate levels from lower one to higher one by one according to FloorNumber
             for (int ii = 0; ii < m_data.FloorNumber; ii++)
             {
                Level baseLevel = m_data.Levels.Values[ii];
                Level topLevel = m_data.Levels.Values[ii + 1];
    
                int matrixXSize = matrixUV.GetLength(0);    //length of matrix's x range
                int matrixYSize = matrixUV.GetLength(1);    //length of matrix's y range
    
                // insert columns in an array format according to the calculated matrix
                foreach (Autodesk.Revit.DB.UV point2D in matrixUV)
                {
                   frameElems.Add(NewColumn(point2D, baseLevel, topLevel));
                }
    
                // insert beams between the tops of each adjacent column in the X and Y direction
                for (int j = 0; j < matrixYSize; j++)
                {
                   for (int i = 0; i < matrixXSize; i++)
                   {
                      //create beams in x direction
                      if (i != (matrixXSize - 1))
                      {
                         frameElems.Add(NewBeam(matrixUV[i, j], matrixUV[i + 1, j], topLevel));
                      }
                      //create beams in y direction
                      if (j != (matrixYSize - 1))
                      {
                         frameElems.Add(NewBeam(matrixUV[i, j], matrixUV[i, j + 1], topLevel));
                      }
                   }
                }
    
                // insert braces between the mid point of each column 
                // and the mid point of each adjoining beam
                for (int j = 0; j < matrixYSize; j++)
                {
                   for (int i = 0; i < matrixXSize; i++)
                   {
                      //create braces in x direction
                      if (i != (matrixXSize - 1))
                      {
                         frameElems.AddRange(
                             NewBraces(matrixUV[i, j], matrixUV[i + 1, j], baseLevel, topLevel));
                      }
                      //create braces in y direction
                      if (j != (matrixYSize - 1))
                      {
                         frameElems.AddRange(
                             NewBraces(matrixUV[i, j], matrixUV[i, j + 1], baseLevel, topLevel));
                      }
                   }
                }
             }
    
             MoveRotateFrame(frameElems);
             t.Commit();
          }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66

    Journaling
    日志,记录和回放插件运行情况。

    void WriteJournalData(ExternalCommandData commandData)
    {
        // Get the StringStringMap class which can write data into.
        IDictionary<String, String> dataMap = commandData.JournalData;
        dataMap.Clear();
    
        // Begin to add the support data
        dataMap.Add("Name", "Autodesk.Revit");
        dataMap.Add("Information", "This is an example.");
        dataMap.Add("Greeting", "Hello Everyone.");
    }
    
    /// 
    /// This sample shows how to get data from journal file. 
    /// 
    void ReadJournalData(ExternalCommandData commandData)
    {
        // Get the StringStringMap class which can write data into.
        IDictionary<String, String> dataMap = commandData.JournalData;
    
        // Begin to get the support data.
        String prompt = "Name: " + dataMap["Name"];
        prompt += "\nInformation: " + dataMap["Information"];
        prompt += "\nGreeting: " + dataMap["Greeting"];
    
        TaskDialog.Show("Revit",prompt);
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28

    Openings
    获取洞口的信息。

    ReferencePlane
    参照平面。

    Reinforcement
    钢筋,参考官方文档

    Rooms
    获取房间的信息。

    SharedCoordinateSystem

    namespace Autodesk.Revit.DB
    {
        public class SiteLocation : ElementType
        {
            public string GeoCoordinateSystemDefinition { get; }
            public string GeoCoordinateSystemId { get; }
            public double Elevation { get; }
            public string WeatherStationName { get; }
            public string PlaceName { get; set; }
            public double TimeZone { get; set; }
            public double Longitude { get; set; }
            public double Latitude { get; set; }
            public DateTime ConvertFromProjectTime(DateTime projectTime);
            public DateTime ConvertToProjectTime(DateTime inputTime);
            public bool IsCompatibleWith(SiteLocation otherSiteLocation);
            public void SetGeoCoordinateSystem(string coordSystem);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
  • 相关阅读:
    【IT面试新理解】
    【Linux】《Linux命令行与shell脚本编程大全 (第4版) 》笔记-ChapterB-sed 和 gawk 快速指南
    【译】使用 GitHub Copilot 作为你的编码 GPS
    使用python计算两个位置的距离是多远
    RL 实践(0)—— 及第平台辛丑年冬赛季【Rule-based policy】
    亚马逊云科技 Build On-这可能是我离Amazon最近的一次
    Linux,虚拟机
    鸿蒙(API 12 Beta3版)【获取支持的编解码能力】 音视频编码
    计算机视觉发展的方向和潜在机会
    【工程光学】几何光学基本定律&成像概念
  • 原文地址:https://blog.csdn.net/weixin_44153630/article/details/132821601