mirror of
https://github.com/jeremytammik/RevitSdkSamples.git
synced 2026-08-13 00:13:18 +00:00
added Revit 2022 SDK minus except *rvt and *rfa
This commit is contained in:
@@ -0,0 +1,93 @@
|
||||
//
|
||||
// (C) Copyright 2003-2019 by Autodesk, Inc.
|
||||
//
|
||||
// Permission to use, copy, modify, and distribute this software in
|
||||
// object code form for any purpose and without fee is hereby granted,
|
||||
// provided that the above copyright notice appears in all copies and
|
||||
// that both that copyright notice and the limited warranty and
|
||||
// restricted rights notice below appear in all supporting
|
||||
// documentation.
|
||||
//
|
||||
// AUTODESK PROVIDES THIS PROGRAM "AS IS" AND WITH ALL FAULTS.
|
||||
// AUTODESK SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTY OF
|
||||
// MERCHANTABILITY OR FITNESS FOR A PARTICULAR USE. AUTODESK, INC.
|
||||
// DOES NOT WARRANT THAT THE OPERATION OF THE PROGRAM WILL BE
|
||||
// UNINTERRUPTED OR ERROR FREE.
|
||||
//
|
||||
// Use, duplication, or disclosure by the U.S. Government is subject to
|
||||
// restrictions set forth in FAR 52.227-19 (Commercial Computer
|
||||
// Software - Restricted Rights) and DFAR 252.227-7013(c)(1)(ii)
|
||||
// (Rights in Technical Data and Computer Software), as applicable.
|
||||
//
|
||||
|
||||
using System;
|
||||
using System.Linq;
|
||||
using System.Windows.Forms;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
|
||||
using Autodesk.Revit;
|
||||
using Autodesk.Revit.DB;
|
||||
using Autodesk.Revit.UI;
|
||||
|
||||
|
||||
namespace Revit.SDK.Samples.ProximityDetection_WallJoinControl.CS
|
||||
{
|
||||
/// <summary>
|
||||
/// Implements the Revit add-in interface IExternalCommand
|
||||
/// </summary>
|
||||
[Autodesk.Revit.Attributes.Transaction(Autodesk.Revit.Attributes.TransactionMode.Manual)]
|
||||
public class Command : IExternalCommand
|
||||
{
|
||||
/// <summary>
|
||||
/// Implement this method as an external command for Revit.
|
||||
/// </summary>
|
||||
/// <param name="commandData">An object that is passed to the external application
|
||||
/// which contains data related to the command,
|
||||
/// such as the application object and active view.</param>
|
||||
/// <param name="message">A message that can be set by the external application
|
||||
/// which will be displayed if a failure or cancellation is returned by
|
||||
/// the external command.</param>
|
||||
/// <param name="elements">A set of elements to which the external application
|
||||
/// can add elements that are to be highlighted in case of failure or cancellation.</param>
|
||||
/// <returns>Return the status of the external command.
|
||||
/// A result of Succeeded means that the API external method functioned as expected.
|
||||
/// Cancelled can be used to signify that the user cancelled the external operation
|
||||
/// at some point. Failure should be returned if the application is unable to proceed with
|
||||
/// the operation.</returns>
|
||||
public virtual Result Execute(ExternalCommandData commandData
|
||||
, ref string message, ElementSet elements)
|
||||
{
|
||||
try
|
||||
{
|
||||
Autodesk.Revit.ApplicationServices.Application application = commandData.Application.Application;
|
||||
Autodesk.Revit.DB.Document document = commandData.Application.ActiveUIDocument.Document;
|
||||
|
||||
// Create an object that is responsible for proximity detection
|
||||
ProximityDetection proximityDetection = ProximityDetection.getInstance(application, document);
|
||||
|
||||
// Create an object that is responsible for controlling the joint of walls
|
||||
WallJoinControl walljoinControl = WallJoinControl.getInstance(application, document);
|
||||
|
||||
// Create the UI for users select operation and view the results.
|
||||
using (ProximityDetectionAndWallJoinControlForm form =
|
||||
new ProximityDetectionAndWallJoinControlForm(document, proximityDetection, walljoinControl))
|
||||
{
|
||||
// show dialog to browser operations and results
|
||||
if (DialogResult.OK != form.ShowDialog())
|
||||
{
|
||||
return Result.Cancelled;
|
||||
}
|
||||
}
|
||||
|
||||
return Result.Succeeded;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
message = ex.Message;
|
||||
return Result.Failed;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+55
@@ -0,0 +1,55 @@
|
||||
//
|
||||
// (C) Copyright 2003-2019 by Autodesk, Inc.
|
||||
//
|
||||
// Permission to use, copy, modify, and distribute this software in
|
||||
// object code form for any purpose and without fee is hereby granted,
|
||||
// provided that the above copyright notice appears in all copies and
|
||||
// that both that copyright notice and the limited warranty and
|
||||
// restricted rights notice below appear in all supporting
|
||||
// documentation.
|
||||
//
|
||||
// AUTODESK PROVIDES THIS PROGRAM "AS IS" AND WITH ALL FAULTS.
|
||||
// AUTODESK SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTY OF
|
||||
// MERCHANTABILITY OR FITNESS FOR A PARTICULAR USE. AUTODESK, INC.
|
||||
// DOES NOT WARRANT THAT THE OPERATION OF THE PROGRAM WILL BE
|
||||
// UNINTERRUPTED OR ERROR FREE.
|
||||
//
|
||||
// Use, duplication, or disclosure by the U.S. Government is subject to
|
||||
// restrictions set forth in FAR 52.227-19 (Commercial Computer
|
||||
// Software - Restricted Rights) and DFAR 252.227-7013(c)(1)(ii)
|
||||
// (Rights in Technical Data and Computer Software), as applicable.
|
||||
//
|
||||
|
||||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
// General Information about an assembly is controlled through the following
|
||||
// set of attributes. Change these attribute values to modify the information
|
||||
// associated with an assembly.
|
||||
[assembly: AssemblyTitle("ProximityDetection_WallJoinControl")]
|
||||
[assembly: AssemblyDescription("")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("")]
|
||||
[assembly: AssemblyProduct("")]
|
||||
[assembly: AssemblyCopyright("Copyright © Autodesk, Inc. 2010")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
// Setting ComVisible to false makes the types in this assembly not visible
|
||||
// to COM components. If you need to access a type in this assembly from
|
||||
// COM, set the ComVisible attribute to true on that type.
|
||||
[assembly: ComVisible(false)]
|
||||
|
||||
// The following GUID is for the ID of the typelib if this project is exposed to COM
|
||||
[assembly: Guid("2936a05d-baf8-43f2-9871-58916187dc3a")]
|
||||
|
||||
// Version information for an assembly consists of the following four values:
|
||||
//
|
||||
// Major Version
|
||||
// Minor Version
|
||||
// Build Number
|
||||
// Revision
|
||||
//
|
||||
[assembly: AssemblyVersion("1.0.0.0")]
|
||||
[assembly: AssemblyFileVersion("1.0.0.0")]
|
||||
@@ -0,0 +1,328 @@
|
||||
//
|
||||
// (C) Copyright 2003-2019 by Autodesk, Inc.
|
||||
//
|
||||
// Permission to use, copy, modify, and distribute this software in
|
||||
// object code form for any purpose and without fee is hereby granted,
|
||||
// provided that the above copyright notice appears in all copies and
|
||||
// that both that copyright notice and the limited warranty and
|
||||
// restricted rights notice below appear in all supporting
|
||||
// documentation.
|
||||
//
|
||||
// AUTODESK PROVIDES THIS PROGRAM "AS IS" AND WITH ALL FAULTS.
|
||||
// AUTODESK SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTY OF
|
||||
// MERCHANTABILITY OR FITNESS FOR A PARTICULAR USE. AUTODESK, INC.
|
||||
// DOES NOT WARRANT THAT THE OPERATION OF THE PROGRAM WILL BE
|
||||
// UNINTERRUPTED OR ERROR FREE.
|
||||
//
|
||||
// Use, duplication, or disclosure by the U.S. Government is subject to
|
||||
// restrictions set forth in FAR 52.227-19 (Commercial Computer
|
||||
// Software - Restricted Rights) and DFAR 252.227-7013(c)(1)(ii)
|
||||
// (Rights in Technical Data and Computer Software), as applicable.
|
||||
//
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Xml.Linq;
|
||||
using System.Text;
|
||||
using Autodesk.Revit.DB;
|
||||
using Autodesk.Revit.UI;
|
||||
|
||||
namespace Revit.SDK.Samples.ProximityDetection_WallJoinControl.CS
|
||||
{
|
||||
/// <summary>
|
||||
/// The class that is responsible for proximity detection
|
||||
/// </summary>
|
||||
public class ProximityDetection
|
||||
{
|
||||
/// <summary>
|
||||
/// The singleton instance of ProximityDetection
|
||||
/// </summary>
|
||||
private static ProximityDetection Instance;
|
||||
|
||||
/// <summary>
|
||||
/// revit application
|
||||
/// </summary>
|
||||
private Autodesk.Revit.ApplicationServices.Application m_app;
|
||||
/// <summary>
|
||||
/// revit document
|
||||
/// </summary>
|
||||
private Autodesk.Revit.DB.Document m_doc;
|
||||
|
||||
/// <summary>
|
||||
/// Constructor
|
||||
/// </summary>
|
||||
/// <param name="app">Revit application</param>
|
||||
/// <param name="doc">Revit document</param>
|
||||
private ProximityDetection(
|
||||
Autodesk.Revit.ApplicationServices.Application app,
|
||||
Autodesk.Revit.DB.Document doc)
|
||||
{
|
||||
m_app = app;
|
||||
m_doc = doc;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Get the singleton instance of ProximityDetection
|
||||
/// </summary>
|
||||
/// <param name="app">Revit application</param>
|
||||
/// <param name="doc">Revit document</param>
|
||||
/// <returns>The singleton instance of ProximityDetection</returns>
|
||||
public static ProximityDetection getInstance(
|
||||
Autodesk.Revit.ApplicationServices.Application app,
|
||||
Autodesk.Revit.DB.Document doc)
|
||||
{
|
||||
if (Instance == null)
|
||||
{
|
||||
Instance = new ProximityDetection(app, doc);
|
||||
}
|
||||
return Instance;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Find columns in wall
|
||||
/// </summary>
|
||||
/// <param name="walls">The walls to be detected</param>
|
||||
/// <returns>The detection result</returns>
|
||||
public XElement findColumnsInWall(IEnumerable<Wall> walls)
|
||||
{
|
||||
// create a node that place all walls.
|
||||
XElement wallsNode = new XElement("Walls", new XAttribute("Name", "Walls"));
|
||||
|
||||
try
|
||||
{
|
||||
foreach (Wall wall in walls)
|
||||
{
|
||||
XElement wallNode = new XElement("Wall", new XAttribute("Name", wall.Name));
|
||||
|
||||
// Iterate to find columns and structural columns
|
||||
FilteredElementCollector collector = new FilteredElementCollector(m_doc);
|
||||
List<BuiltInCategory> columnCategories = new List<BuiltInCategory>();
|
||||
columnCategories.Add(BuiltInCategory.OST_Columns);
|
||||
columnCategories.Add(BuiltInCategory.OST_StructuralColumns);
|
||||
collector.WherePasses(new ElementMulticategoryFilter(columnCategories));
|
||||
|
||||
// Apply element intersection filter
|
||||
ElementIntersectsElementFilter testElementIntersectsElementFilter =
|
||||
new ElementIntersectsElementFilter(wall);
|
||||
|
||||
collector.WherePasses(testElementIntersectsElementFilter);
|
||||
|
||||
XElement columnsNode = new XElement("columns",
|
||||
new XAttribute("Count", collector.Count().ToString()));
|
||||
|
||||
foreach (Element column in collector)
|
||||
{
|
||||
columnsNode.Add(new XElement("column", new XAttribute("Name", column.Name)));
|
||||
}
|
||||
|
||||
wallNode.Add(columnsNode);
|
||||
wallsNode.Add(wallNode);
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
wallsNode.Add(new XElement("Error", new XAttribute("Exception", ex.ToString())));
|
||||
}
|
||||
|
||||
// return the whole walls Node
|
||||
return wallsNode;
|
||||
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Find elements blocking egress
|
||||
/// </summary>
|
||||
/// <param name="egresses">The egresses to be detected</param>
|
||||
/// <returns>The detection result</returns>
|
||||
public XElement findBlockingElements(ICollection<Element> egresses)
|
||||
{
|
||||
// create a node that place all egresses.
|
||||
XElement egressesNode = new XElement("Egresses", new XAttribute("Name", "Egresses"));
|
||||
|
||||
try
|
||||
{
|
||||
// find the elements blocking egress
|
||||
foreach (Element egressElement in egresses)
|
||||
{
|
||||
XElement egressNode = new XElement("Egress",
|
||||
new XAttribute("Name", egressElement.Name));
|
||||
|
||||
int count = 1;
|
||||
IEnumerator<GeometryObject> Objects = egressElement.get_Geometry(new Autodesk.Revit.DB.Options()).GetEnumerator();
|
||||
Objects.MoveNext();
|
||||
GeometryInstance gi = Objects.Current as GeometryInstance;
|
||||
IEnumerator<GeometryObject> Objects1 = gi.GetInstanceGeometry().GetEnumerator();
|
||||
|
||||
|
||||
//foreach (GeometryObject egressGObj in
|
||||
// (egressElement.get_Geometry(new Autodesk.Revit.DB.Options()).Objects.get_Item(0) as GeometryInstance).GetInstanceGeometry().Objects)
|
||||
while (Objects1.MoveNext())
|
||||
{
|
||||
GeometryObject egressGObj = Objects1.Current;
|
||||
|
||||
if (egressGObj is Solid)
|
||||
{
|
||||
Solid egressVolume = egressGObj as Solid; //calculated from shape and location of a given door
|
||||
|
||||
XElement solidNode = new XElement("ElementSolid" + count.ToString());
|
||||
// Iterate to find all instance types
|
||||
FilteredElementCollector blockingcollector = new FilteredElementCollector(m_doc);
|
||||
blockingcollector.WhereElementIsNotElementType();
|
||||
|
||||
// Apply geometric filter
|
||||
ElementIntersectsSolidFilter testElementIntersectsSolidFilter =
|
||||
new ElementIntersectsSolidFilter(egressVolume);
|
||||
blockingcollector.WherePasses(testElementIntersectsSolidFilter);
|
||||
|
||||
IEnumerable<Element> blockingElement = blockingcollector;
|
||||
|
||||
// Exclude the door itself
|
||||
List<ElementId> exclusions = new List<ElementId>();
|
||||
exclusions.Add(egressElement.Id);
|
||||
blockingcollector.Excluding(exclusions);
|
||||
|
||||
XElement blockingegressNode = new XElement("blocking_egress_elements",
|
||||
new XAttribute("Count", blockingElement.Count().ToString()));
|
||||
|
||||
foreach (Element blockingelement in blockingElement)
|
||||
{
|
||||
blockingegressNode.Add(new XElement("blocking_egress_element",
|
||||
new XAttribute("Name", blockingelement.Name)));
|
||||
}
|
||||
|
||||
solidNode.Add(blockingegressNode);
|
||||
egressNode.Add(solidNode);
|
||||
|
||||
count++;
|
||||
}
|
||||
}
|
||||
egressesNode.Add(egressNode);
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
egressesNode.Add(new XElement("Error", new XAttribute("Exception", ex.ToString())));
|
||||
}
|
||||
|
||||
// return the whole Egresses Node
|
||||
return egressesNode;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Find walls (nearly joined to) end of walls
|
||||
/// </summary>
|
||||
/// <param name="walls">The walls to be detected</param>
|
||||
/// <returns>The detection result</returns>
|
||||
public XElement findNearbyWalls(IEnumerable<Wall> walls)
|
||||
{
|
||||
// create a node that place all walls.
|
||||
XElement wallsNode = new XElement("Walls", new XAttribute("Name", "Walls"));
|
||||
|
||||
try
|
||||
{
|
||||
foreach (Wall wall in walls)
|
||||
{
|
||||
XElement wallNode = new XElement("Wall", new XAttribute("Name", wall.Name));
|
||||
|
||||
// Start
|
||||
XElement endNode = new XElement("Start", new XAttribute("Name", "Start"));
|
||||
|
||||
XYZ wallEndPoint = (wall.Location as LocationCurve).Curve.GetEndPoint(0);
|
||||
double wallHeight = wall.get_Parameter(BuiltInParameter.WALL_USER_HEIGHT_PARAM).AsDouble();
|
||||
|
||||
FilteredElementCollector collector = nearbyWallsFilter(wallEndPoint, wallHeight, 10.0); // 10 ft
|
||||
|
||||
// Exclude the wall itself
|
||||
List<ElementId> exclusions = new List<ElementId>();
|
||||
exclusions.Add(wall.Id);
|
||||
collector.Excluding(exclusions);
|
||||
|
||||
IEnumerable<Wall> nearbyWalls = collector.OfType<Wall>();
|
||||
|
||||
XElement nearbyWallsNode = new XElement("near_by_walls",
|
||||
new XAttribute("Count", nearbyWalls.Count().ToString()));
|
||||
|
||||
foreach (Wall nearbywall in nearbyWalls)
|
||||
{
|
||||
nearbyWallsNode.Add(new XElement("near_by_wall",
|
||||
new XAttribute("Name", nearbywall.Name)));
|
||||
}
|
||||
|
||||
endNode.Add(nearbyWallsNode);
|
||||
wallNode.Add(endNode);
|
||||
|
||||
// End
|
||||
endNode = new XElement("End", new XAttribute("Name", "End"));
|
||||
|
||||
wallEndPoint = (wall.Location as LocationCurve).Curve.GetEndPoint(1);
|
||||
|
||||
collector = nearbyWallsFilter(wallEndPoint, wallHeight, 10.0);
|
||||
|
||||
// Exclude the wall itself
|
||||
exclusions = new List<ElementId>();
|
||||
exclusions.Add(wall.Id);
|
||||
collector.Excluding(exclusions);
|
||||
|
||||
nearbyWalls = collector.OfType<Wall>();
|
||||
|
||||
nearbyWallsNode = new XElement("near_by_walls",
|
||||
new XAttribute("Count", nearbyWalls.Count().ToString()));
|
||||
|
||||
foreach (Wall nearbywall in nearbyWalls)
|
||||
{
|
||||
nearbyWallsNode.Add(new XElement("near_by_wall",
|
||||
new XAttribute("Name", nearbywall.Name)));
|
||||
}
|
||||
|
||||
endNode.Add(nearbyWallsNode);
|
||||
wallNode.Add(endNode);
|
||||
|
||||
wallsNode.Add(wallNode);
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
wallsNode.Add(new XElement("Error", new XAttribute("Exception", ex.ToString())));
|
||||
}
|
||||
|
||||
// return the whole walls Node
|
||||
return wallsNode;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Find the nearby walls on specific point and in specific height
|
||||
/// </summary>
|
||||
/// <param name="point">The given point</param>
|
||||
/// <param name="height">The given height</param>
|
||||
/// <param name="radius">The radius in which walls can be detected</param>
|
||||
/// <returns>The detection result</returns>
|
||||
private FilteredElementCollector nearbyWallsFilter(XYZ point, double height, double radius)
|
||||
{
|
||||
// build cylindrical shape around wall endpoint
|
||||
List<CurveLoop> curveloops = new List<CurveLoop>();
|
||||
CurveLoop circle = new CurveLoop();
|
||||
circle.Append(Arc.Create(point, radius
|
||||
, 0, Math.PI,
|
||||
XYZ.BasisX, XYZ.BasisY));
|
||||
circle.Append(Arc.Create(point, radius
|
||||
, Math.PI, 2 * Math.PI,
|
||||
XYZ.BasisX, XYZ.BasisY));
|
||||
curveloops.Add(circle);
|
||||
|
||||
Solid wallEndCylinder =
|
||||
GeometryCreationUtilities.CreateExtrusionGeometry(curveloops, XYZ.BasisZ, height);
|
||||
|
||||
// Iterate document to find walls
|
||||
FilteredElementCollector collector = new FilteredElementCollector(m_doc);
|
||||
collector.OfCategory(BuiltInCategory.OST_Walls);
|
||||
|
||||
// Apply geometric filter
|
||||
ElementIntersectsSolidFilter testElementIntersectsSolidFilter =
|
||||
new ElementIntersectsSolidFilter(wallEndCylinder);
|
||||
collector.WherePasses(testElementIntersectsSolidFilter);
|
||||
|
||||
return collector;
|
||||
}
|
||||
}
|
||||
}
|
||||
+210
@@ -0,0 +1,210 @@
|
||||
namespace Revit.SDK.Samples.ProximityDetection_WallJoinControl.CS
|
||||
{
|
||||
partial class ProximityDetectionAndWallJoinControlForm
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.buttonOK = new System.Windows.Forms.Button();
|
||||
this.buttonCancel = new System.Windows.Forms.Button();
|
||||
this.groupBoxResults = new System.Windows.Forms.GroupBox();
|
||||
this.treeViewResults = new System.Windows.Forms.TreeView();
|
||||
this.groupBoxOperations = new System.Windows.Forms.GroupBox();
|
||||
this.radioButtonCheckJoinedWalls = new System.Windows.Forms.RadioButton();
|
||||
this.radioButtonFindNearbyWalls = new System.Windows.Forms.RadioButton();
|
||||
this.radioButtonFindBlockingElements = new System.Windows.Forms.RadioButton();
|
||||
this.radioButtonFindColumnsInWall = new System.Windows.Forms.RadioButton();
|
||||
this.groupBoxDescription = new System.Windows.Forms.GroupBox();
|
||||
this.labelDescription = new System.Windows.Forms.Label();
|
||||
this.groupBoxResults.SuspendLayout();
|
||||
this.groupBoxOperations.SuspendLayout();
|
||||
this.groupBoxDescription.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// buttonOK
|
||||
//
|
||||
this.buttonOK.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.buttonOK.Location = new System.Drawing.Point(432, 463);
|
||||
this.buttonOK.Name = "buttonOK";
|
||||
this.buttonOK.Size = new System.Drawing.Size(75, 23);
|
||||
this.buttonOK.TabIndex = 0;
|
||||
this.buttonOK.Text = "&OK";
|
||||
this.buttonOK.UseVisualStyleBackColor = true;
|
||||
this.buttonOK.Click += new System.EventHandler(this.buttonOK_Click);
|
||||
//
|
||||
// buttonCancel
|
||||
//
|
||||
this.buttonCancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.buttonCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel;
|
||||
this.buttonCancel.Location = new System.Drawing.Point(513, 463);
|
||||
this.buttonCancel.Name = "buttonCancel";
|
||||
this.buttonCancel.Size = new System.Drawing.Size(75, 23);
|
||||
this.buttonCancel.TabIndex = 1;
|
||||
this.buttonCancel.Text = "&Cancel";
|
||||
this.buttonCancel.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// groupBoxResults
|
||||
//
|
||||
this.groupBoxResults.Controls.Add(this.treeViewResults);
|
||||
this.groupBoxResults.Location = new System.Drawing.Point(257, 13);
|
||||
this.groupBoxResults.Name = "groupBoxResults";
|
||||
this.groupBoxResults.Size = new System.Drawing.Size(331, 439);
|
||||
this.groupBoxResults.TabIndex = 2;
|
||||
this.groupBoxResults.TabStop = false;
|
||||
this.groupBoxResults.Text = "Results";
|
||||
//
|
||||
// treeViewResults
|
||||
//
|
||||
this.treeViewResults.Location = new System.Drawing.Point(6, 19);
|
||||
this.treeViewResults.Name = "treeViewResults";
|
||||
this.treeViewResults.Size = new System.Drawing.Size(319, 414);
|
||||
this.treeViewResults.TabIndex = 0;
|
||||
//
|
||||
// groupBoxOperations
|
||||
//
|
||||
this.groupBoxOperations.Controls.Add(this.radioButtonCheckJoinedWalls);
|
||||
this.groupBoxOperations.Controls.Add(this.radioButtonFindNearbyWalls);
|
||||
this.groupBoxOperations.Controls.Add(this.radioButtonFindBlockingElements);
|
||||
this.groupBoxOperations.Controls.Add(this.radioButtonFindColumnsInWall);
|
||||
this.groupBoxOperations.Location = new System.Drawing.Point(7, 13);
|
||||
this.groupBoxOperations.Name = "groupBoxOperations";
|
||||
this.groupBoxOperations.Size = new System.Drawing.Size(244, 267);
|
||||
this.groupBoxOperations.TabIndex = 3;
|
||||
this.groupBoxOperations.TabStop = false;
|
||||
this.groupBoxOperations.Text = "Operations";
|
||||
//
|
||||
// radioButtonCheckJoinedWalls
|
||||
//
|
||||
this.radioButtonCheckJoinedWalls.AutoSize = true;
|
||||
this.radioButtonCheckJoinedWalls.Location = new System.Drawing.Point(17, 217);
|
||||
this.radioButtonCheckJoinedWalls.Name = "radioButtonCheckJoinedWalls";
|
||||
this.radioButtonCheckJoinedWalls.Size = new System.Drawing.Size(166, 17);
|
||||
this.radioButtonCheckJoinedWalls.TabIndex = 3;
|
||||
this.radioButtonCheckJoinedWalls.TabStop = true;
|
||||
this.radioButtonCheckJoinedWalls.Text = "Check walls join/disjoin states";
|
||||
this.radioButtonCheckJoinedWalls.UseVisualStyleBackColor = true;
|
||||
this.radioButtonCheckJoinedWalls.CheckedChanged += new System.EventHandler(this.radioButtonCheckJoinedWalls_CheckedChanged);
|
||||
//
|
||||
// radioButtonFindNearbyWalls
|
||||
//
|
||||
this.radioButtonFindNearbyWalls.AutoSize = true;
|
||||
this.radioButtonFindNearbyWalls.Location = new System.Drawing.Point(17, 157);
|
||||
this.radioButtonFindNearbyWalls.Name = "radioButtonFindNearbyWalls";
|
||||
this.radioButtonFindNearbyWalls.Size = new System.Drawing.Size(210, 17);
|
||||
this.radioButtonFindNearbyWalls.TabIndex = 2;
|
||||
this.radioButtonFindNearbyWalls.TabStop = true;
|
||||
this.radioButtonFindNearbyWalls.Text = "Find walls (nearly joined to) end of walls";
|
||||
this.radioButtonFindNearbyWalls.UseVisualStyleBackColor = true;
|
||||
this.radioButtonFindNearbyWalls.CheckedChanged += new System.EventHandler(this.radioButtonFindNearbyWalls_CheckedChanged);
|
||||
//
|
||||
// radioButtonFindBlockingElements
|
||||
//
|
||||
this.radioButtonFindBlockingElements.AutoSize = true;
|
||||
this.radioButtonFindBlockingElements.Location = new System.Drawing.Point(17, 97);
|
||||
this.radioButtonFindBlockingElements.Name = "radioButtonFindBlockingElements";
|
||||
this.radioButtonFindBlockingElements.Size = new System.Drawing.Size(167, 17);
|
||||
this.radioButtonFindBlockingElements.TabIndex = 1;
|
||||
this.radioButtonFindBlockingElements.TabStop = true;
|
||||
this.radioButtonFindBlockingElements.Text = "Find elements blocking egress";
|
||||
this.radioButtonFindBlockingElements.UseVisualStyleBackColor = true;
|
||||
this.radioButtonFindBlockingElements.CheckedChanged += new System.EventHandler(this.radioButtonFindBlockingElements_CheckedChanged);
|
||||
//
|
||||
// radioButtonFindColumnsInWall
|
||||
//
|
||||
this.radioButtonFindColumnsInWall.AutoSize = true;
|
||||
this.radioButtonFindColumnsInWall.Checked = true;
|
||||
this.radioButtonFindColumnsInWall.Location = new System.Drawing.Point(17, 37);
|
||||
this.radioButtonFindColumnsInWall.Name = "radioButtonFindColumnsInWall";
|
||||
this.radioButtonFindColumnsInWall.Size = new System.Drawing.Size(119, 17);
|
||||
this.radioButtonFindColumnsInWall.TabIndex = 0;
|
||||
this.radioButtonFindColumnsInWall.TabStop = true;
|
||||
this.radioButtonFindColumnsInWall.Text = "Find columns in wall";
|
||||
this.radioButtonFindColumnsInWall.UseVisualStyleBackColor = true;
|
||||
this.radioButtonFindColumnsInWall.CheckedChanged += new System.EventHandler(this.radioButtonFindColumnsInWall_CheckedChanged);
|
||||
//
|
||||
// groupBoxDescription
|
||||
//
|
||||
this.groupBoxDescription.Controls.Add(this.labelDescription);
|
||||
this.groupBoxDescription.Location = new System.Drawing.Point(8, 297);
|
||||
this.groupBoxDescription.Name = "groupBoxDescription";
|
||||
this.groupBoxDescription.Size = new System.Drawing.Size(243, 154);
|
||||
this.groupBoxDescription.TabIndex = 4;
|
||||
this.groupBoxDescription.TabStop = false;
|
||||
this.groupBoxDescription.Text = "Description";
|
||||
//
|
||||
// labelDescription
|
||||
//
|
||||
this.labelDescription.AutoSize = true;
|
||||
this.labelDescription.Location = new System.Drawing.Point(13, 25);
|
||||
this.labelDescription.Name = "labelDescription";
|
||||
this.labelDescription.Size = new System.Drawing.Size(101, 13);
|
||||
this.labelDescription.TabIndex = 0;
|
||||
this.labelDescription.Text = "Find columns in wall";
|
||||
//
|
||||
// ProximityDetectionAndWallJoinControlForm
|
||||
//
|
||||
this.AcceptButton = this.buttonOK;
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.CancelButton = this.buttonCancel;
|
||||
this.ClientSize = new System.Drawing.Size(600, 498);
|
||||
this.Controls.Add(this.groupBoxDescription);
|
||||
this.Controls.Add(this.groupBoxOperations);
|
||||
this.Controls.Add(this.groupBoxResults);
|
||||
this.Controls.Add(this.buttonCancel);
|
||||
this.Controls.Add(this.buttonOK);
|
||||
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
|
||||
this.MaximizeBox = false;
|
||||
this.MinimizeBox = false;
|
||||
this.Name = "ProximityDetectionAndWallJoinControlForm";
|
||||
this.ShowIcon = false;
|
||||
this.ShowInTaskbar = false;
|
||||
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
|
||||
this.Text = "ProximityDetectionAndWallDisjoinForm";
|
||||
this.groupBoxResults.ResumeLayout(false);
|
||||
this.groupBoxOperations.ResumeLayout(false);
|
||||
this.groupBoxOperations.PerformLayout();
|
||||
this.groupBoxDescription.ResumeLayout(false);
|
||||
this.groupBoxDescription.PerformLayout();
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.Button buttonOK;
|
||||
private System.Windows.Forms.Button buttonCancel;
|
||||
private System.Windows.Forms.GroupBox groupBoxResults;
|
||||
private System.Windows.Forms.GroupBox groupBoxOperations;
|
||||
private System.Windows.Forms.GroupBox groupBoxDescription;
|
||||
private System.Windows.Forms.RadioButton radioButtonFindColumnsInWall;
|
||||
private System.Windows.Forms.RadioButton radioButtonFindBlockingElements;
|
||||
private System.Windows.Forms.RadioButton radioButtonFindNearbyWalls;
|
||||
private System.Windows.Forms.RadioButton radioButtonCheckJoinedWalls;
|
||||
private System.Windows.Forms.Label labelDescription;
|
||||
private System.Windows.Forms.TreeView treeViewResults;
|
||||
}
|
||||
}
|
||||
+211
@@ -0,0 +1,211 @@
|
||||
//
|
||||
// (C) Copyright 2003-2019 by Autodesk, Inc.
|
||||
//
|
||||
// Permission to use, copy, modify, and distribute this software in
|
||||
// object code form for any purpose and without fee is hereby granted,
|
||||
// provided that the above copyright notice appears in all copies and
|
||||
// that both that copyright notice and the limited warranty and
|
||||
// restricted rights notice below appear in all supporting
|
||||
// documentation.
|
||||
//
|
||||
// AUTODESK PROVIDES THIS PROGRAM "AS IS" AND WITH ALL FAULTS.
|
||||
// AUTODESK SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTY OF
|
||||
// MERCHANTABILITY OR FITNESS FOR A PARTICULAR USE. AUTODESK, INC.
|
||||
// DOES NOT WARRANT THAT THE OPERATION OF THE PROGRAM WILL BE
|
||||
// UNINTERRUPTED OR ERROR FREE.
|
||||
//
|
||||
// Use, duplication, or disclosure by the U.S. Government is subject to
|
||||
// restrictions set forth in FAR 52.227-19 (Commercial Computer
|
||||
// Software - Restricted Rights) and DFAR 252.227-7013(c)(1)(ii)
|
||||
// (Rights in Technical Data and Computer Software), as applicable.
|
||||
//
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Xml.Linq;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
using Autodesk.Revit.DB;
|
||||
using Autodesk.Revit.UI;
|
||||
|
||||
namespace Revit.SDK.Samples.ProximityDetection_WallJoinControl.CS
|
||||
{
|
||||
/// <summary>
|
||||
/// The form that show the operations and results
|
||||
/// </summary>
|
||||
public partial class ProximityDetectionAndWallJoinControlForm : System.Windows.Forms.Form
|
||||
{
|
||||
/// <summary>
|
||||
/// revit document
|
||||
/// </summary>
|
||||
private Autodesk.Revit.DB.Document m_doc;
|
||||
/// <summary>
|
||||
/// The object that is responsible for proximity detection
|
||||
/// </summary>
|
||||
private ProximityDetection m_proximityDetection;
|
||||
/// <summary>
|
||||
/// The object that is responsible for controlling the joint of walls
|
||||
/// </summary>
|
||||
private WallJoinControl m_walljoinControl;
|
||||
|
||||
/// <summary>
|
||||
/// Constructor
|
||||
/// </summary>
|
||||
/// <param name="doc">Revit document</param>
|
||||
/// <param name="proximityDetection">The object that is responsible for proximity detection</param>
|
||||
/// <param name="walljoinControl">The object that is responsible for controlling the joint of walls</param>
|
||||
public ProximityDetectionAndWallJoinControlForm(Autodesk.Revit.DB.Document doc,
|
||||
ProximityDetection proximityDetection,
|
||||
WallJoinControl walljoinControl)
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
m_doc = doc;
|
||||
m_proximityDetection = proximityDetection;
|
||||
m_walljoinControl = walljoinControl;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Clear the treeview's data
|
||||
/// </summary>
|
||||
private void ClearTreeviewData()
|
||||
{
|
||||
this.treeViewResults.Nodes.Clear();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Refresh the treeview's data by given XML
|
||||
/// </summary>
|
||||
/// <param name="operation">The operation name</param>
|
||||
/// <param name="element">The given XML</param>
|
||||
private void RefreshTreeviewData(string operation, XElement element)
|
||||
{
|
||||
this.treeViewResults.Nodes.Clear();
|
||||
|
||||
//treeView.Nodes adds first level node
|
||||
TreeNode node = new TreeNode(operation);
|
||||
this.treeViewResults.Nodes.Add(node);
|
||||
|
||||
// append node
|
||||
TreeNode spaceNode = XElementToTreeNode(element);
|
||||
node.Nodes.Add(spaceNode);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// This method converts XElement nodes to Tree nodes
|
||||
/// </summary>
|
||||
/// <param name="element">XElement to be converted</param>
|
||||
/// <returns>Tree Node that comes from XElement</returns>
|
||||
private TreeNode XElementToTreeNode(XElement element)
|
||||
{
|
||||
if (0 == element.Name.LocalName.Length)
|
||||
return null;
|
||||
|
||||
string nodename = element.Name.LocalName;
|
||||
foreach(XAttribute att in element.Attributes())
|
||||
{
|
||||
nodename += " (" + att.Name.LocalName + ":" + att.Value + ")";
|
||||
}
|
||||
//TreeNode node = new TreeNode(element.FirstAttribute.Value);
|
||||
TreeNode node = new TreeNode(nodename);
|
||||
|
||||
if (!element.HasElements)
|
||||
// return if it is leaf node
|
||||
return node;
|
||||
// convert its child elements
|
||||
foreach (XElement ele in element.Elements())
|
||||
{
|
||||
node.Nodes.Add(XElementToTreeNode(ele));
|
||||
}
|
||||
|
||||
// return whole node
|
||||
return node;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Get all of the walls
|
||||
/// </summary>
|
||||
/// <returns>All walls' set</returns>
|
||||
private IEnumerable<Wall> getAllWalls()
|
||||
{
|
||||
FilteredElementCollector wallCollector = new FilteredElementCollector(m_doc);
|
||||
wallCollector.OfClass(typeof(Wall));
|
||||
|
||||
return wallCollector.OfType<Wall>();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Get all of the egresses
|
||||
/// </summary>
|
||||
/// <returns>All egresses' set</returns>
|
||||
private ICollection<Element> getAllEgresses()
|
||||
{
|
||||
FilteredElementCollector collector = new FilteredElementCollector(m_doc);
|
||||
ElementClassFilter filterFamilyInstance = new ElementClassFilter(typeof(FamilyInstance));
|
||||
ElementCategoryFilter filterDoorCategory = new ElementCategoryFilter(BuiltInCategory.OST_Doors);
|
||||
LogicalAndFilter filterDoorInstance = new LogicalAndFilter(filterDoorCategory, filterFamilyInstance);
|
||||
return collector.WherePasses(filterDoorInstance).ToElements();
|
||||
}
|
||||
|
||||
private void radioButtonFindColumnsInWall_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
ClearTreeviewData();
|
||||
|
||||
labelDescription.Text = "Find columns in wall";
|
||||
}
|
||||
|
||||
private void radioButtonFindBlockingElements_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
ClearTreeviewData();
|
||||
|
||||
labelDescription.Text = "Find elements blocking egress";
|
||||
}
|
||||
|
||||
private void radioButtonFindNearbyWalls_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
ClearTreeviewData();
|
||||
|
||||
labelDescription.Text = "Find walls (nearly joined to) end of walls";
|
||||
}
|
||||
|
||||
private void radioButtonCheckJoinedWalls_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
ClearTreeviewData();
|
||||
|
||||
labelDescription.Text = "Check walls join/disjoin states";
|
||||
}
|
||||
|
||||
private void buttonOK_Click(object sender, EventArgs e)
|
||||
{
|
||||
Transaction tran = new Transaction(m_doc, "GeometryCreation_BooleanOperation");
|
||||
tran.Start();
|
||||
|
||||
if (radioButtonFindColumnsInWall.Checked)
|
||||
{
|
||||
RefreshTreeviewData("Find columns in wall", m_proximityDetection.findColumnsInWall(getAllWalls()));
|
||||
}
|
||||
else if (radioButtonFindBlockingElements.Checked)
|
||||
{
|
||||
RefreshTreeviewData("Find elements blocking egress", m_proximityDetection.findBlockingElements(getAllEgresses()));
|
||||
}
|
||||
else if (radioButtonFindNearbyWalls.Checked)
|
||||
{
|
||||
RefreshTreeviewData("Find walls (nearly joined to) end of walls", m_proximityDetection.findNearbyWalls(getAllWalls()));
|
||||
}
|
||||
else
|
||||
{
|
||||
RefreshTreeviewData("Check walls join/disjoin states", m_walljoinControl.checkJoinedWalls(getAllWalls()));
|
||||
}
|
||||
|
||||
// expand all child
|
||||
this.treeViewResults.ExpandAll();
|
||||
|
||||
tran.Commit();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
+120
@@ -0,0 +1,120 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
||||
+12
@@ -0,0 +1,12 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<RevitAddIns>
|
||||
<AddIn Type="Command">
|
||||
<Assembly>ProximityDetection_WallJoinControl.dll</Assembly>
|
||||
<ClientId>aade10aa-c009-4665-8f65-d2837b444a2e</ClientId>
|
||||
<FullClassName>Revit.SDK.Samples.ProximityDetection_WallJoinControl.CS.Command</FullClassName>
|
||||
<Text>Proximity Detection and Wall Join Control</Text>
|
||||
<Description>The usage of ElementIntersectsSolidFilter,ElementIntersectsElementFilter and WallUtils</Description>
|
||||
<VisibilityMode>AlwaysVisible</VisibilityMode>
|
||||
<VendorId>adsk</VendorId>
|
||||
</AddIn>
|
||||
</RevitAddIns>
|
||||
+140
@@ -0,0 +1,140 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProductVersion>9.0.30729</ProductVersion>
|
||||
<SchemaVersion>2.0</SchemaVersion>
|
||||
<ProjectGuid>{C89EA386-EFDF-42DB-9B5D-045B9D4117DA}</ProjectGuid>
|
||||
<OutputType>Library</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>Revit.SDK.Samples.ProximityDetection_WallJoinControl.CS</RootNamespace>
|
||||
<AssemblyName>ProximityDetection_WallJoinControl</AssemblyName>
|
||||
<StartupObject>
|
||||
</StartupObject>
|
||||
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
|
||||
<FileUpgradeFlags>
|
||||
</FileUpgradeFlags>
|
||||
<UpgradeBackupLocation>
|
||||
</UpgradeBackupLocation>
|
||||
<OldToolsVersion>3.5</OldToolsVersion>
|
||||
<TargetFrameworkProfile />
|
||||
<PublishUrl>publish\</PublishUrl>
|
||||
<Install>true</Install>
|
||||
<InstallFrom>Disk</InstallFrom>
|
||||
<UpdateEnabled>false</UpdateEnabled>
|
||||
<UpdateMode>Foreground</UpdateMode>
|
||||
<UpdateInterval>7</UpdateInterval>
|
||||
<UpdateIntervalUnits>Days</UpdateIntervalUnits>
|
||||
<UpdatePeriodically>false</UpdatePeriodically>
|
||||
<UpdateRequired>false</UpdateRequired>
|
||||
<MapFileExtensions>true</MapFileExtensions>
|
||||
<ApplicationRevision>0</ApplicationRevision>
|
||||
<ApplicationVersion>1.0.0.%2a</ApplicationVersion>
|
||||
<IsWebBootstrapper>false</IsWebBootstrapper>
|
||||
<UseApplicationTrust>false</UseApplicationTrust>
|
||||
<BootstrapperEnabled>true</BootstrapperEnabled>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>bin\Debug\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<TreatWarningsAsErrors>false</TreatWarningsAsErrors>
|
||||
<DocumentationFile>bin\Debug\ProximityDetection_WallJoinControl.xml</DocumentationFile>
|
||||
<CodeAnalysisRuleSet>ProximityDetection_WallJoinControl.ruleset</CodeAnalysisRuleSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\Release\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<CodeAnalysisRuleSet>ProximityDetection_WallJoinControl.ruleset</CodeAnalysisRuleSet>
|
||||
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<OutputPath>bin\x64\Debug\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<DocumentationFile>bin\Debug\ProximityDetection_WallJoinControl.xml</DocumentationFile>
|
||||
<DebugType>full</DebugType>
|
||||
<PlatformTarget>x64</PlatformTarget>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<CodeAnalysisRuleSet>ProximityDetection_WallJoinControl.ruleset</CodeAnalysisRuleSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'">
|
||||
<OutputPath>bin\x64\Release\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<Optimize>true</Optimize>
|
||||
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<PlatformTarget>x64</PlatformTarget>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<CodeAnalysisRuleSet>ProximityDetection_WallJoinControl.ruleset</CodeAnalysisRuleSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<RunPostBuildEvent>OnOutputUpdated</RunPostBuildEvent>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Drawing" />
|
||||
<Reference Include="System.Windows.Forms" />
|
||||
<Reference Include="System.Xml" />
|
||||
<Reference Include="System.Core">
|
||||
<RequiredTargetFramework>3.5</RequiredTargetFramework>
|
||||
</Reference>
|
||||
<Reference Include="System.Xml.Linq">
|
||||
<RequiredTargetFramework>3.5</RequiredTargetFramework>
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="Command.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="ProximityDetection.cs" />
|
||||
<Compile Include="ProximityDetectionAndWallJoinControlForm.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="ProximityDetectionAndWallJoinControlForm.Designer.cs">
|
||||
<DependentUpon>ProximityDetectionAndWallJoinControlForm.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="WallJoinControl.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<BootstrapperPackage Include="Microsoft.Net.Client.3.5">
|
||||
<Visible>False</Visible>
|
||||
<ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
|
||||
<Install>false</Install>
|
||||
</BootstrapperPackage>
|
||||
<BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
|
||||
<Visible>False</Visible>
|
||||
<ProductName>.NET Framework 3.5 SP1</ProductName>
|
||||
<Install>true</Install>
|
||||
</BootstrapperPackage>
|
||||
<BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
|
||||
<Visible>False</Visible>
|
||||
<ProductName>Windows Installer 3.1</ProductName>
|
||||
<Install>true</Install>
|
||||
</BootstrapperPackage>
|
||||
</ItemGroup>
|
||||
<Import Project="$(SolutionDir)VSProps\SDKSamples.targets" />
|
||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
Other similar extension points exist, see Microsoft.Common.targets.
|
||||
<Target Name="BeforeBuild">
|
||||
</Target>
|
||||
<Target Name="AfterBuild">
|
||||
</Target>
|
||||
-->
|
||||
<PropertyGroup>
|
||||
<PostBuildEvent>set FILEFORSAMPLEREG="$(SolutionDir)..\..\..\..\Regression\API\SDKSamples\UpdateSampleDllForRegression.pl"
|
||||
if exist %25FILEFORSAMPLEREG%25 perl %25FILEFORSAMPLEREG%25 $(ProjectExt) "$(ProjectPath)" "$(TargetPath)" "$(SolutionDir)"</PostBuildEvent>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<ResolveAssemblyWarnOrErrorOnTargetArchitectureMismatch>None</ResolveAssemblyWarnOrErrorOnTargetArchitectureMismatch>
|
||||
</PropertyGroup>
|
||||
</Project>
|
||||
+279
@@ -0,0 +1,279 @@
|
||||
{\rtf1\adeflang1025\ansi\ansicpg1252\uc1\adeff0\deff0\stshfdbch31505\stshfloch31506\stshfhich31506\stshfbi0\deflang1033\deflangfe2052\themelang1033\themelangfe0\themelangcs0{\fonttbl{\f0\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f1\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0604020202020204}Arial;}
|
||||
{\f34\fbidi \froman\fcharset0\fprq2{\*\panose 02040503050406030204}Cambria Math;}{\flomajor\f31500\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}
|
||||
{\fdbmajor\f31501\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\fhimajor\f31502\fbidi \froman\fcharset0\fprq2{\*\panose 02040503050406030204}Cambria;}
|
||||
{\fbimajor\f31503\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\flominor\f31504\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}
|
||||
{\fdbminor\f31505\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\fhiminor\f31506\fbidi \fswiss\fcharset0\fprq2{\*\panose 020f0502020204030204}Calibri;}
|
||||
{\fbiminor\f31507\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f296\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\f297\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}
|
||||
{\f299\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\f300\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\f301\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\f302\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}
|
||||
{\f303\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\f304\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\f306\fbidi \fswiss\fcharset238\fprq2 Arial CE;}{\f307\fbidi \fswiss\fcharset204\fprq2 Arial Cyr;}
|
||||
{\f309\fbidi \fswiss\fcharset161\fprq2 Arial Greek;}{\f310\fbidi \fswiss\fcharset162\fprq2 Arial Tur;}{\f311\fbidi \fswiss\fcharset177\fprq2 Arial (Hebrew);}{\f312\fbidi \fswiss\fcharset178\fprq2 Arial (Arabic);}
|
||||
{\f313\fbidi \fswiss\fcharset186\fprq2 Arial Baltic;}{\f314\fbidi \fswiss\fcharset163\fprq2 Arial (Vietnamese);}{\f636\fbidi \froman\fcharset238\fprq2 Cambria Math CE;}{\f637\fbidi \froman\fcharset204\fprq2 Cambria Math Cyr;}
|
||||
{\f639\fbidi \froman\fcharset161\fprq2 Cambria Math Greek;}{\f640\fbidi \froman\fcharset162\fprq2 Cambria Math Tur;}{\f643\fbidi \froman\fcharset186\fprq2 Cambria Math Baltic;}{\f644\fbidi \froman\fcharset163\fprq2 Cambria Math (Vietnamese);}
|
||||
{\flomajor\f31508\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\flomajor\f31509\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\flomajor\f31511\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}
|
||||
{\flomajor\f31512\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\flomajor\f31513\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\flomajor\f31514\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}
|
||||
{\flomajor\f31515\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\flomajor\f31516\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\fdbmajor\f31518\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}
|
||||
{\fdbmajor\f31519\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\fdbmajor\f31521\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fdbmajor\f31522\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}
|
||||
{\fdbmajor\f31523\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\fdbmajor\f31524\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fdbmajor\f31525\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}
|
||||
{\fdbmajor\f31526\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\fhimajor\f31528\fbidi \froman\fcharset238\fprq2 Cambria CE;}{\fhimajor\f31529\fbidi \froman\fcharset204\fprq2 Cambria Cyr;}
|
||||
{\fhimajor\f31531\fbidi \froman\fcharset161\fprq2 Cambria Greek;}{\fhimajor\f31532\fbidi \froman\fcharset162\fprq2 Cambria Tur;}{\fhimajor\f31535\fbidi \froman\fcharset186\fprq2 Cambria Baltic;}
|
||||
{\fhimajor\f31536\fbidi \froman\fcharset163\fprq2 Cambria (Vietnamese);}{\fbimajor\f31538\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\fbimajor\f31539\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}
|
||||
{\fbimajor\f31541\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fbimajor\f31542\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\fbimajor\f31543\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}
|
||||
{\fbimajor\f31544\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fbimajor\f31545\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\fbimajor\f31546\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}
|
||||
{\flominor\f31548\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\flominor\f31549\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\flominor\f31551\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}
|
||||
{\flominor\f31552\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\flominor\f31553\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\flominor\f31554\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}
|
||||
{\flominor\f31555\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\flominor\f31556\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\fdbminor\f31558\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}
|
||||
{\fdbminor\f31559\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\fdbminor\f31561\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fdbminor\f31562\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}
|
||||
{\fdbminor\f31563\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\fdbminor\f31564\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fdbminor\f31565\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}
|
||||
{\fdbminor\f31566\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\fhiminor\f31568\fbidi \fswiss\fcharset238\fprq2 Calibri CE;}{\fhiminor\f31569\fbidi \fswiss\fcharset204\fprq2 Calibri Cyr;}
|
||||
{\fhiminor\f31571\fbidi \fswiss\fcharset161\fprq2 Calibri Greek;}{\fhiminor\f31572\fbidi \fswiss\fcharset162\fprq2 Calibri Tur;}{\fhiminor\f31575\fbidi \fswiss\fcharset186\fprq2 Calibri Baltic;}
|
||||
{\fhiminor\f31576\fbidi \fswiss\fcharset163\fprq2 Calibri (Vietnamese);}{\fbiminor\f31578\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\fbiminor\f31579\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}
|
||||
{\fbiminor\f31581\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fbiminor\f31582\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\fbiminor\f31583\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}
|
||||
{\fbiminor\f31584\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fbiminor\f31585\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\fbiminor\f31586\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}}
|
||||
{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;
|
||||
\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;\chyperlink\ctint255\cshade255\red0\green0\blue255;}{\*\defchp \fs22\loch\af31506\hich\af31506\dbch\af31505 }{\*\defpap
|
||||
\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 }\noqfpromote {\stylesheet{\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1
|
||||
\af0\afs22\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe2052\loch\f31506\hich\af31506\dbch\af31505\cgrid\langnp1033\langfenp2052 \snext0 \sqformat \spriority0 Normal;}{\*\cs10 \additive \ssemihidden \sunhideused \spriority1 Default Paragraph Font;}{\*
|
||||
\ts11\tsrowd\trftsWidthB3\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\tblind0\tblindtype3\tsvertalt\tsbrdrt\tsbrdrl\tsbrdrb\tsbrdrr\tsbrdrdgl\tsbrdrdgr\tsbrdrh\tsbrdrv \ql \li0\ri0\sa200\sl276\slmult1
|
||||
\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs22\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe2052\loch\f31506\hich\af31506\dbch\af31505\cgrid\langnp1033\langfenp2052 \snext11 \ssemihidden \sunhideused
|
||||
Normal Table;}{\*\cs15 \additive \rtlch\fcs1 \af0 \ltrch\fcs0 \ul\cf17 \sbasedon10 \sunhideused \styrsid4030229 Hyperlink;}}{\*\rsidtbl \rsid79897\rsid208273\rsid1398544\rsid1923881\rsid2697966\rsid3308385\rsid4030229\rsid4685359\rsid5533104\rsid5573710
|
||||
\rsid5779217\rsid6173193\rsid6772835\rsid8148608\rsid8479394\rsid9402523\rsid9661171\rsid10054504\rsid11357043\rsid11937507\rsid12201452\rsid12875400\rsid13905700}{\mmathPr\mmathFont34\mbrkBin0\mbrkBinSub0\msmallFrac0\mdispDef1\mlMargin0\mrMargin0\mdefJc1
|
||||
\mwrapIndent1440\mintLim0\mnaryLim1}{\info{\author Robert Ruan}{\operator Robert Ruan}{\creatim\yr2011\mo2\dy21\hr17\min22}{\revtim\yr2011\mo2\dy22\hr17\min19}{\version3}{\edmins0}{\nofpages2}{\nofwords409}{\nofchars2337}{\*\company Autodesk, Inc.}
|
||||
{\nofcharsws2741}{\vern49255}}{\*\xmlnstbl {\xmlns1 http://schemas.microsoft.com/office/word/2003/wordml}}\paperw12240\paperh15840\margl1440\margr1440\margt1440\margb1440\gutter0\ltrsect
|
||||
\widowctrl\ftnbj\aenddoc\trackmoves0\trackformatting1\donotembedsysfont0\relyonvml0\donotembedlingdata1\grfdocevents0\validatexml0\showplaceholdtext0\ignoremixedcontent0\saveinvalidxml0\showxmlerrors0\horzdoc\dghspace120\dgvspace120\dghorigin1701
|
||||
\dgvorigin1984\dghshow0\dgvshow3\jcompress\viewkind1\viewscale100\rsidroot4030229 \fet0{\*\wgrffmtfilter 2450}\ilfomacatclnup0\ltrpar \sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl2
|
||||
\pnucltr\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang {\pntxta )}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl6
|
||||
\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang
|
||||
{\pntxtb (}{\pntxta )}}\pard\plain \ltrpar\ql \li0\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0\pararsid4030229 \rtlch\fcs1 \af0\afs22\alang1025 \ltrch\fcs0
|
||||
\fs22\lang1033\langfe2052\loch\af31506\hich\af31506\dbch\af31505\cgrid\langnp1033\langfenp2052 {\rtlch\fcs1 \ab\af1\afs20 \ltrch\fcs0 \b\f1\fs20\insrsid1923881 \hich\af1\dbch\af31505\loch\f1 Application:}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0
|
||||
\f1\fs20\insrsid1923881 \hich\af1\dbch\af31505\loch\f1 }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid4030229\charrsid4030229 \hich\af1\dbch\af31505\loch\f1 ProximityDetection_WallJoinControl}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0
|
||||
\f1\fs20\insrsid1923881 \line }{\rtlch\fcs1 \ab\af1\afs20 \ltrch\fcs0 \b\f1\fs20\insrsid1923881 \hich\af1\dbch\af31505\loch\f1 Revit Platform:}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid1923881 \hich\af1\dbch\af31505\loch\f1 All\line }{
|
||||
\rtlch\fcs1 \ab\af1\afs20 \ltrch\fcs0 \b\f1\fs20\insrsid1923881 \hich\af1\dbch\af31505\loch\f1 Revit Version:}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid1923881 \hich\af1\dbch\af31505\loch\f1 2011.0\line }{\rtlch\fcs1 \ab\af1\afs20 \ltrch\fcs0
|
||||
\b\f1\fs20\insrsid1923881 \hich\af1\dbch\af31505\loch\f1 First Released For:}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid1923881 \hich\af1\dbch\af31505\loch\f1 2011.0\line }{\rtlch\fcs1 \ab\af1\afs20 \ltrch\fcs0 \b\f1\fs20\insrsid1923881
|
||||
\hich\af1\dbch\af31505\loch\f1 Programming Language:}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid1923881 \hich\af1\dbch\af31505\loch\f1 C#\line }{\rtlch\fcs1 \ab\af1\afs20 \ltrch\fcs0 \b\f1\fs20\insrsid1923881 \hich\af1\dbch\af31505\loch\f1
|
||||
Skill Level:}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid1923881 \hich\af1\dbch\af31505\loch\f1 Medium\line }{\rtlch\fcs1 \ab\af1\afs20 \ltrch\fcs0 \b\f1\fs20\insrsid1923881 \hich\af1\dbch\af31505\loch\f1 Category:}{\rtlch\fcs1 \af1\afs20
|
||||
\ltrch\fcs0 \f1\fs20\insrsid1923881 \hich\af1\dbch\af31505\loch\f1 Geometry\line }{\rtlch\fcs1 \ab\af1\afs20 \ltrch\fcs0 \b\f1\fs20\insrsid1923881 \hich\af1\dbch\af31505\loch\f1 Type:}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid1923881
|
||||
\hich\af1\dbch\af31505\loch\f1 ExternalCommand\line \line }{\rtlch\fcs1 \ab\af1\afs20 \ltrch\fcs0 \b\f1\fs20\insrsid1923881 \hich\af1\dbch\af31505\loch\f1 Subject:}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid1923881
|
||||
\hich\af1\dbch\af31505\loch\f1 Proximity Detection and Wall }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid4030229\charrsid4030229 \hich\af1\dbch\af31505\loch\f1 Join}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid4030229
|
||||
\hich\af1\dbch\af31505\loch\f1 }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid4030229\charrsid4030229 \hich\af1\dbch\af31505\loch\f1 Control}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid1923881 \line }{\rtlch\fcs1 \ab\af1\afs20 \ltrch\fcs0
|
||||
\b\f1\fs20\insrsid1923881 \hich\af1\dbch\af31505\loch\f1 Summary:}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid1923881 \hich\af1\dbch\af31505\loch\f1 \line }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid4030229\charrsid8148608
|
||||
\hich\af1\dbch\af31505\loch\f1 This sample is to }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid4030229 \hich\af1\dbch\af31505\loch\f1 demonstrate how to }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid10054504 \loch\af1\dbch\af31505\hich\f1
|
||||
\'93\loch\f1 f}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid4030229\charrsid4030229 \hich\af1\dbch\af31505\loch\f1 ind columns in wall}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid10054504 \loch\af1\dbch\af31505\hich\f1 \'94}{\rtlch\fcs1
|
||||
\af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid4030229\charrsid4030229 \hich\af1\dbch\af31505\loch\f1 , }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid10054504 \loch\af1\dbch\af31505\hich\f1 \'93\loch\f1 f}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0
|
||||
\f1\fs20\insrsid4030229\charrsid4030229 \hich\af1\dbch\af31505\loch\f1 ind elements blocking egress}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid10054504 \loch\af1\dbch\af31505\hich\f1 \'94}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0
|
||||
\f1\fs20\insrsid4030229\charrsid4030229 \hich\af1\dbch\af31505\loch\f1 , }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid10054504 \loch\af1\dbch\af31505\hich\f1 \'93\loch\f1 f}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0
|
||||
\f1\fs20\insrsid4030229\charrsid4030229 \hich\af1\dbch\af31505\loch\f1 ind walls (nearly joined to) end of w\hich\af1\dbch\af31505\loch\f1 alls}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid10054504 \loch\af1\dbch\af31505\hich\f1 \'94}{\rtlch\fcs1
|
||||
\af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid4030229\charrsid4030229 \hich\af1\dbch\af31505\loch\f1 and }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid10054504 \loch\af1\dbch\af31505\hich\f1 \'93}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0
|
||||
\f1\fs20\insrsid13905700 \hich\af1\dbch\af31505\loch\f1 c}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid13905700\charrsid11937507 \hich\af1\dbch\af31505\loch\f1 heck walls join/disjoin states}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0
|
||||
\f1\fs20\insrsid10054504 \loch\af1\dbch\af31505\hich\f1 \'94}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid4030229\charrsid4030229 \hich\af1\dbch\af31505\loch\f1 by }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid4030229
|
||||
\hich\af1\dbch\af31505\loch\f1 ElementIntersectsSolidFilter, ElementIntersectsElementFilter and WallUtils.
|
||||
\par }\pard \ltrpar\ql \li0\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \f0\fs20\insrsid1923881
|
||||
\par }{\rtlch\fcs1 \ab\af1\afs20 \ltrch\fcs0 \b\f1\fs20\insrsid1923881 \hich\af1\dbch\af31505\loch\f1 Classes:}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid1923881
|
||||
\par }\pard \ltrpar\ql \fi360\li0\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0\pararsid4030229 {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid4030229 \hich\af1\dbch\af31505\loch\f1 Autodesk.Revit.}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0
|
||||
\f1\fs20\lang1036\langfe2052\langnp1036\insrsid4030229 \hich\af1\dbch\af31505\loch\f1 UI.IExternalCommand}{\rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \f0\fs20\insrsid4030229
|
||||
\par }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid4030229 \hich\af1\dbch\af31505\loch\f1 Autodesk.Revit.Document}{\rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \f0\fs20\insrsid4030229
|
||||
\par }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\lang1036\langfe2052\langnp1036\insrsid4030229\charrsid208273 \hich\af1\dbch\af31505\loch\f1 Autodesk.Revit.Element
|
||||
\par \hich\af1\dbch\af31505\loch\f1 Autodesk.Revit.DB;}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\lang1036\langfe2052\langnp1036\insrsid4030229
|
||||
\par \hich\af1\dbch\af31505\loch\f1 Autodesk.Revit.UI}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\lang1036\langfe2052\langnp1036\insrsid4030229\charrsid208273 \hich\af1\dbch\af31505\loch\f1 ;
|
||||
\par }\pard \ltrpar\ql \li0\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \ab\af1\afs20 \ltrch\fcs0 \b\f1\fs20\lang1036\langfe2052\langnp1036\insrsid4030229
|
||||
\par }{\rtlch\fcs1 \ab\af1\afs20 \ltrch\fcs0 \b\f1\fs20\insrsid1923881 \hich\af1\dbch\af31505\loch\f1 Project Files:}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid1923881 \hich\af1\dbch\af31505\loch\f1 }{\rtlch\fcs1 \ai\af1\afs20 \ltrch\fcs0
|
||||
\i\f1\fs20\insrsid1923881
|
||||
\par }\pard \ltrpar\ql \li0\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0\pararsid4030229 {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid4030229 \hich\af1\dbch\af31505\loch\f1 Command.cs}{\rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \f0\fs20\insrsid4030229
|
||||
|
||||
\par }\pard \ltrpar\ql \li360\ri0\nowidctlpar\tx720\wrapdefault\faauto\rin0\lin360\itap0\pararsid4030229 {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid4030229 \hich\af1\dbch\af31505\loch\f1
|
||||
This file contains a class Command which implements IExternalCommand interface. The function of the class is to create }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid1398544 \hich\af1\dbch\af31505\loch\f1 two}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0
|
||||
\f1\fs20\insrsid4030229 \hich\af1\dbch\af31505\loch\f1 instance}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid1398544 \hich\af1\dbch\af31505\loch\f1 s}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid4030229 \hich\af1\dbch\af31505\loch\f1 of }{
|
||||
\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid4030229\charrsid4030229 \hich\af1\dbch\af31505\loch\f1 ProximityDetection }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid4030229 \hich\af1\dbch\af31505\loch\f1 and }{\rtlch\fcs1 \af1\afs20
|
||||
\ltrch\fcs0 \f1\fs20\insrsid4030229\charrsid4030229 \hich\af1\dbch\af31505\loch\f1 WallJoinControl}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid4030229 \hich\af1\dbch\af31505\loch\f1 , and pop the dialog for user }{\rtlch\fcs1 \af1\afs20
|
||||
\ltrch\fcs0 \f1\fs20\insrsid1398544 \hich\af1\dbch\af31505\loch\f1 operation}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid4030229 \hich\af1\dbch\af31505\loch\f1 and displaying \hich\af1\dbch\af31505\loch\f1 the results}{\rtlch\fcs1 \af1\afs20
|
||||
\ltrch\fcs0 \f1\fs20\insrsid4030229\charrsid2697966 .
|
||||
\par }{\rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \f0\fs20\insrsid4030229
|
||||
\par }\pard \ltrpar\ql \li0\ri0\nowidctlpar\tx720\wrapdefault\faauto\rin0\lin0\itap0\pararsid4030229 {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid4030229\charrsid4030229 \hich\af1\dbch\af31505\loch\f1 ProximityDetection.cs}{\rtlch\fcs1 \af1\afs20
|
||||
\ltrch\fcs0 \f1\fs20\insrsid4030229
|
||||
\par }\pard \ltrpar\ql \li360\ri0\nowidctlpar\tx720\wrapdefault\faauto\rin0\lin360\itap0\pararsid4030229 {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid4030229 \hich\af1\dbch\af31505\loch\f1 This file contains a class }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0
|
||||
\f1\fs20\insrsid4030229\charrsid4030229 \hich\af1\dbch\af31505\loch\f1 ProximityDetection}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid4030229 \hich\af1\dbch\af31505\loch\f1 which }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0
|
||||
\f1\fs20\insrsid10054504\charrsid10054504 \hich\af1\dbch\af31505\loch\f1 implement}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid10054504 \hich\af1\dbch\af31505\loch\f1 s }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid1398544
|
||||
\hich\af1\dbch\af31505\loch\f1 three applications - }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid10054504 \loch\af1\dbch\af31505\hich\f1 \'93\loch\f1 f}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid10054504\charrsid4030229
|
||||
\hich\af1\dbch\af31505\loch\f1 ind columns in wall}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid10054504 \loch\af1\dbch\af31505\hich\f1 \'94}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid10054504\charrsid4030229
|
||||
\hich\af1\dbch\af31505\loch\f1 , }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid10054504 \loch\af1\dbch\af31505\hich\f1 \'93\loch\f1 f}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid10054504\charrsid4030229 \hich\af1\dbch\af31505\loch\f1
|
||||
ind elements blocking egress}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid10054504 \loch\af1\dbch\af31505\hich\f1 \'94}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid10054504\charrsid4030229 \hich\af1\dbch\af31505\loch\f1 , }{\rtlch\fcs1
|
||||
\af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid10054504 \loch\af1\dbch\af31505\hich\f1 \'93\loch\f1 f}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid10054504\charrsid4030229 \hich\af1\dbch\af31505\loch\f1 ind walls (nearly joined to) end of walls}{
|
||||
\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid1398544 \loch\af1\dbch\af31505\hich\f1 \'94}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid4030229\charrsid2697966 .
|
||||
\par
|
||||
\par }\pard \ltrpar\ql \li0\ri0\nowidctlpar\tx720\wrapdefault\faauto\rin0\lin0\itap0\pararsid4030229 {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid4030229\charrsid4030229 \hich\af1\dbch\af31505\loch\f1 WallJoinControl.cs}{\rtlch\fcs1 \af1\afs20
|
||||
\ltrch\fcs0 \f1\fs20\insrsid4030229
|
||||
\par }\pard \ltrpar\ql \li360\ri0\nowidctlpar\tx720\wrapdefault\faauto\rin0\lin360\itap0\pararsid10054504 {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid10054504 \hich\af1\dbch\af31505\loch\f1 This file contains a class }{\rtlch\fcs1 \af1\afs20
|
||||
\ltrch\fcs0 \f1\fs20\insrsid10054504\charrsid4030229 \hich\af1\dbch\af31505\loch\f1 WallJoinControl}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid10054504 \hich\af1\dbch\af31505\loch\f1 which }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0
|
||||
\f1\fs20\insrsid10054504\charrsid10054504 \hich\af1\dbch\af31505\loch\f1 implement}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid10054504 \hich\af1\dbch\af31505\loch\f1 s the }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid1398544
|
||||
\hich\af1\dbch\af31505\loch\f1 application - }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid10054504 \loch\af1\dbch\af31505\hich\f1 \'93}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid13905700 \hich\af1\dbch\af31505\loch\f1 c}{\rtlch\fcs1
|
||||
\af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid13905700\charrsid11937507 \hich\af1\dbch\af31505\loch\f1 heck walls join/disjoin states}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid10054504 \loch\af1\dbch\af31505\hich\f1 \'94}{\rtlch\fcs1 \af1\afs20
|
||||
\ltrch\fcs0 \f1\fs20\insrsid10054504\charrsid2697966 .
|
||||
\par }\pard \ltrpar\ql \li360\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin360\itap0\pararsid4030229 {\rtlch\fcs1 \ab\af0\afs20 \ltrch\fcs0 \b\f0\fs20\insrsid4030229
|
||||
\par }\pard \ltrpar\ql \li0\ri0\nowidctlpar\tx720\wrapdefault\faauto\rin0\lin0\itap0\pararsid4030229 {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid4030229\charrsid4030229 \hich\af1\dbch\af31505\loch\f1 ProximityDetectionAndWallJoinControlForm.cs}{
|
||||
\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid4030229
|
||||
\par }\pard \ltrpar\ql \li360\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin360\itap0\pararsid3308385 {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid3308385 \hich\af1\dbch\af31505\loch\f1
|
||||
This file contains a window form which allows user to select the operation and view the result.}{\rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \f0\fs20\insrsid3308385
|
||||
\par }\pard \ltrpar\ql \li0\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0\pararsid3308385 {\rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \f0\fs20\insrsid3308385
|
||||
\par }\pard \ltrpar\ql \li0\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \ab\af1\afs20 \ltrch\fcs0 \b\f1\fs20\insrsid1923881 \hich\af1\dbch\af31505\loch\f1 Description:}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid1923881
|
||||
\hich\af1\dbch\af31505\loch\f1 }{\rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \f0\fs20\insrsid1923881
|
||||
\par }\pard \ltrpar\ql \li0\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0\pararsid11937507 {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid11357043 \hich\af1\dbch\af31505\loch\f1
|
||||
The sample implements IExternalCommand interface and allows user to select the operation via form. User could run the applications, and then user can read the results in the form}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid5779217 .}{\rtlch\fcs1
|
||||
\af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid11357043\charrsid11937507
|
||||
\par }\pard \ltrpar\ql \fi-360\li360\ri0\nowidctlpar\tx360\wrapdefault\faauto\rin0\lin360\itap0\pararsid11357043 {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid11357043 -\tab \hich\af1\dbch\af31505\loch\f1 To }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0
|
||||
\f1\fs20\insrsid11937507 \hich\af1\dbch\af31505\loch\f1 show the form, }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid11357043 \hich\af1\dbch\af31505\loch\f1 use the method }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0
|
||||
\f1\fs20\insrsid11937507\charrsid11937507 \hich\af1\dbch\af31505\loch\f1 ShowDialog}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid11937507 \hich\af1\dbch\af31505\loch\f1 }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid11357043
|
||||
\hich\af1\dbch\af31505\loch\f1 of }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid11937507\charrsid11937507 \hich\af1\dbch\af31505\loch\f1 ProximityDete\hich\af1\dbch\af31505\loch\f1 ctionAndWallJoinControlForm}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0
|
||||
\f1\fs20\insrsid11357043\charrsid11937507 .}{\rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \f0\fs20\insrsid11357043
|
||||
\par }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid11357043 -\tab }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid11937507 \hich\af1\dbch\af31505\loch\f1 Select first radio button t}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid11357043
|
||||
\hich\af1\dbch\af31505\loch\f1 o }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid11937507 \hich\af1\dbch\af31505\loch\f1 f}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid11937507\charrsid4030229 \hich\af1\dbch\af31505\loch\f1 ind columns in wall
|
||||
}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid11357043 \hich\af1\dbch\af31505\loch\f1 , use the method }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid11937507\charrsid11937507 \hich\af1\dbch\af31505\loch\f1 findBlockingElements}{\rtlch\fcs1
|
||||
\af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid11937507 \hich\af1\dbch\af31505\loch\f1 }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid11357043 \hich\af1\dbch\af31505\loch\f1 of }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid11937507\charrsid4030229
|
||||
\hich\af1\dbch\af31505\loch\f1 ProximityDetection}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid11357043\charrsid11937507 .}{\rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \f0\fs20\insrsid11357043
|
||||
\par }\pard \ltrpar\ql \fi-360\li360\ri0\nowidctlpar\tx360\wrapdefault\faauto\rin0\lin360\itap0\pararsid11937507 {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid11937507 -\tab \hich\af1\dbch\af31505\loch\f1 Select second radio button to f}{\rtlch\fcs1
|
||||
\af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid11937507\charrsid4030229 \hich\af1\dbch\af31505\loch\f1 ind elements blocking egress}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid11937507 \hich\af1\dbch\af31505\loch\f1 , use the method }{\rtlch\fcs1
|
||||
\af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid11937507\charrsid11937507 \hich\af1\dbch\af31505\loch\f1 findColumnsInWall}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid11937507 \hich\af1\dbch\af31505\loch\f1 of }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0
|
||||
\f1\fs20\insrsid11937507\charrsid4030229 \hich\af1\dbch\af31505\loch\f1 ProximityDetecti\hich\af1\dbch\af31505\loch\f1 on}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid11937507\charrsid11937507 .}{\rtlch\fcs1 \af0\afs20 \ltrch\fcs0
|
||||
\f0\fs20\insrsid11937507
|
||||
\par }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid11937507 -\tab \hich\af1\dbch\af31505\loch\f1 Select third radio button to f}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid11937507\charrsid4030229 \hich\af1\dbch\af31505\loch\f1
|
||||
ind walls (nearly joined to) end of walls}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid11937507 \hich\af1\dbch\af31505\loch\f1 , use the method }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid11937507\charrsid11937507
|
||||
\hich\af1\dbch\af31505\loch\f1 findNearbyWalls}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid11937507 \hich\af1\dbch\af31505\loch\f1 of }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid11937507\charrsid4030229 \hich\af1\dbch\af31505\loch\f1
|
||||
ProximityDetection}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid11937507\charrsid11937507 .}{\rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \f0\fs20\insrsid11937507
|
||||
\par }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid11937507 -\tab \hich\af1\dbch\af31505\loch\f1 Select fourth radio button to }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid13905700 \hich\af1\dbch\af31505\loch\f1 c}{\rtlch\fcs1 \af1\afs20
|
||||
\ltrch\fcs0 \f1\fs20\insrsid13905700\charrsid11937507 \hich\af1\dbch\af31505\loch\f1 heck walls join/disjoin states}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid11937507 \hich\af1\dbch\af31505\loch\f1 , use the method }{\rtlch\fcs1 \af1\afs20
|
||||
\ltrch\fcs0 \f1\fs20\insrsid11937507\charrsid11937507 \hich\af1\dbch\af31505\loch\f1 checkJoinedWalls}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid11937507 \hich\af1\dbch\af31505\loch\f1 of }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0
|
||||
\f1\fs20\insrsid11937507\charrsid4030229 \hich\af1\dbch\af31505\loch\f1 WallJoinControl}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid11937507\charrsid11937507 .}{\rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \f0\fs20\insrsid11937507
|
||||
\par }\pard \ltrpar\ql \fi-360\li360\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin360\itap0\pararsid11357043 {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid11357043 -\tab \hich\af1\dbch\af31505\loch\f1 To view}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0
|
||||
\f1\fs20\insrsid11937507 \hich\af1\dbch\af31505\loch\f1 the results}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid11357043 \hich\af1\dbch\af31505\loch\f1 , }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid11937507
|
||||
\hich\af1\dbch\af31505\loch\f1 check the treeview of form}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid11357043\charrsid11937507 .}{\rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \f0\fs20\insrsid11357043
|
||||
\par }\pard \ltrpar\ql \li0\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \ab\af1\afs20 \ltrch\fcs0 \b\f1\fs20\insrsid11357043
|
||||
\par }{\rtlch\fcs1 \ab\af1\afs20 \ltrch\fcs0 \b\f1\fs20\insrsid1923881 \hich\af1\dbch\af31505\loch\f1 Instructions:}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\cf2\insrsid1923881 \hich\af1\dbch\af31505\loch\f1 }{\rtlch\fcs1 \af0\afs20 \ltrch\fcs0
|
||||
\f0\fs20\cf2\insrsid1923881
|
||||
\par }\pard \ltrpar\ql \fi-360\li360\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin360\itap0\pararsid11937507 {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid11937507 \hich\af1\dbch\af31505\loch\f1 1.\tab }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0
|
||||
\f1\fs20\insrsid11937507\charrsid12201452 \hich\af1\dbch\af31505\loch\f1 Set up addin file and start revit to load this sample.}{\rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \f0\fs20\insrsid11937507
|
||||
\par }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid11937507 \hich\af1\dbch\af31505\loch\f1 2.\tab Launch }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid11937507\charrsid11937507 \hich\af1\dbch\af31505\loch\f1
|
||||
Proximity Detection and Wall Join Control}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid11937507 \hich\af1\dbch\af31505\loch\f1 via the external command menu}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid11937507\charrsid8479394 .}{
|
||||
\rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \f0\fs20\insrsid11937507
|
||||
\par }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid11937507 \hich\af1\dbch\af31505\loch\f1 4.\tab \hich\f1 Select the operation - \'93\loch\f1 f}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid11937507\charrsid4030229 \hich\af1\dbch\af31505\loch\f1
|
||||
ind columns in wall}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid11937507 \loch\af1\dbch\af31505\hich\f1 \'94}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid11937507\charrsid4030229 \hich\af1\dbch\af31505\loch\f1 , }{\rtlch\fcs1 \af1\afs20
|
||||
\ltrch\fcs0 \f1\fs20\insrsid1398544 \hich\af1\dbch\af31505\loch\f1 or }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid11937507 \loch\af1\dbch\af31505\hich\f1 \'93\loch\f1 f}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid11937507\charrsid4030229
|
||||
\hich\af1\dbch\af31505\loch\f1 ind elements blocking egress}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid11937507 \loch\af1\dbch\af31505\hich\f1 \'94}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid11937507\charrsid4030229
|
||||
\hich\af1\dbch\af31505\loch\f1 , }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid1398544 \hich\af1\dbch\af31505\loch\f1 or }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid11937507 \loch\af1\dbch\af31505\hich\f1 \'93\loch\f1 f}{\rtlch\fcs1
|
||||
\af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid11937507\charrsid4030229 \hich\af1\dbch\af31505\loch\f1 ind walls (nearly joined to) end of walls}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid11937507 \loch\af1\dbch\af31505\hich\f1 \'94}{\rtlch\fcs1
|
||||
\af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid11937507\charrsid4030229 \hich\af1\dbch\af31505\loch\f1 }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid1398544 \hich\af1\dbch\af31505\loch\f1 or}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid11937507
|
||||
\hich\af1\dbch\af31505\loch\f1 \hich\f1 \'93\loch\f1 c}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid11937507\charrsid11937507 \hich\af1\dbch\af31505\loch\f1 heck walls join/disjoin states}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0
|
||||
\f1\fs20\insrsid11937507 \loch\af1\dbch\af31505\hich\f1 \'94}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid11937507\charrsid8479394 .}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid11937507 \hich\af1\dbch\af31505\loch\f1 Click OK button.}{
|
||||
\rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \f0\fs20\insrsid11937507
|
||||
\par }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid11937507 \hich\af1\dbch\af31505\loch\f1 6.\tab According to the operation you selected, the sample will display the results}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid1398544
|
||||
\hich\af1\dbch\af31505\loch\f1 of operation}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid11937507 \hich\af1\dbch\af31505\loch\f1 . You can view the information by clicking the tree view.}{\rtlch\fcs1 \af0\afs20 \ltrch\fcs0
|
||||
\f0\fs20\insrsid11937507
|
||||
\par }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid11937507 \hich\af1\dbch\af31505\loch\f1 7.\tab Click Cancel button to end}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid11937507\charrsid8479394 .}{\rtlch\fcs1 \af0\afs20 \ltrch\fcs0
|
||||
\f0\fs20\insrsid11937507
|
||||
\par }{\*\themedata 504b030414000600080000002100e9de0fbfff0000001c020000130000005b436f6e74656e745f54797065735d2e786d6cac91cb4ec3301045f748fc83e52d4a
|
||||
9cb2400825e982c78ec7a27cc0c8992416c9d8b2a755fbf74cd25442a820166c2cd933f79e3be372bd1f07b5c3989ca74aaff2422b24eb1b475da5df374fd9ad
|
||||
5689811a183c61a50f98f4babebc2837878049899a52a57be670674cb23d8e90721f90a4d2fa3802cb35762680fd800ecd7551dc18eb899138e3c943d7e503b6
|
||||
b01d583deee5f99824e290b4ba3f364eac4a430883b3c092d4eca8f946c916422ecab927f52ea42b89a1cd59c254f919b0e85e6535d135a8de20f20b8c12c3b0
|
||||
0c895fcf6720192de6bf3b9e89ecdbd6596cbcdd8eb28e7c365ecc4ec1ff1460f53fe813d3cc7f5b7f020000ffff0300504b030414000600080000002100a5d6
|
||||
a7e7c0000000360100000b0000005f72656c732f2e72656c73848fcf6ac3300c87ef85bd83d17d51d2c31825762fa590432fa37d00e1287f68221bdb1bebdb4f
|
||||
c7060abb0884a4eff7a93dfeae8bf9e194e720169aaa06c3e2433fcb68e1763dbf7f82c985a4a725085b787086a37bdbb55fbc50d1a33ccd311ba548b6309512
|
||||
0f88d94fbc52ae4264d1c910d24a45db3462247fa791715fd71f989e19e0364cd3f51652d73760ae8fa8c9ffb3c330cc9e4fc17faf2ce545046e37944c69e462
|
||||
a1a82fe353bd90a865aad41ed0b5b8f9d6fd010000ffff0300504b0304140006000800000021006b799616830000008a0000001c0000007468656d652f746865
|
||||
6d652f7468656d654d616e616765722e786d6c0ccc4d0ac3201040e17da17790d93763bb284562b2cbaebbf600439c1a41c7a0d29fdbd7e5e38337cedf14d59b
|
||||
4b0d592c9c070d8a65cd2e88b7f07c2ca71ba8da481cc52c6ce1c715e6e97818c9b48d13df49c873517d23d59085adb5dd20d6b52bd521ef2cdd5eb9246a3d8b
|
||||
4757e8d3f729e245eb2b260a0238fd010000ffff0300504b03041400060008000000210030dd4329a8060000a41b0000160000007468656d652f7468656d652f
|
||||
7468656d65312e786d6cec594f6fdb3614bf0fd87720746f6327761a07758ad8b19b2d4d1bc46e871e698996d850a240d2497d1bdae38001c3ba618715d86d87
|
||||
615b8116d8a5fb34d93a6c1dd0afb0475292c5585e9236d88aad3e2412f9e3fbff1e1fa9abd7eec70c1d1221294fda5efd72cd4324f1794093b0eddd1ef62fad
|
||||
79482a9c0498f184b4bd2991deb58df7dfbb8ad755446282607d22d771db8b944ad79796a40fc3585ee62949606ecc458c15bc8a702910f808e8c66c69b9565b
|
||||
5d8a314d3c94e018c8de1a8fa94fd05093f43672e23d06af89927ac06762a049136785c10607758d9053d965021d62d6f6804fc08f86e4bef210c352c144dbab
|
||||
999fb7b4717509af678b985ab0b6b4ae6f7ed9ba6c4170b06c788a705430adf71bad2b5b057d03606a1ed7ebf5babd7a41cf00b0ef83a6569632cd467faddec9
|
||||
699640f6719e76b7d6ac355c7c89feca9cccad4ea7d36c65b258a206641f1b73f8b5da6a6373d9c11b90c537e7f08dce66b7bbeae00dc8e257e7f0fd2badd586
|
||||
8b37a088d1e4600ead1ddaef67d40bc898b3ed4af81ac0d76a197c86826828a24bb318f3442d8ab518dfe3a20f000d6458d104a9694ac6d88728eee2782428d6
|
||||
0cf03ac1a5193be4cbb921cd0b495fd054b5bd0f530c1931a3f7eaf9f7af9e3f45c70f9e1d3ff8e9f8e1c3e3073f5a42ceaa6d9c84e5552fbffdeccfc71fa33f
|
||||
9e7ef3f2d117d57859c6fffac327bffcfc793510d26726ce8b2f9ffcf6ecc98baf3efdfdbb4715f04d814765f890c644a29be408edf3181433567125272371be
|
||||
15c308d3f28acd249438c19a4b05fd9e8a1cf4cd296699771c393ac4b5e01d01e5a30a787d72cf1178108989a2159c77a2d801ee72ce3a5c545a6147f32a9979
|
||||
3849c26ae66252c6ed637c58c5bb8b13c7bfbd490a75330f4b47f16e441c31f7184e140e494214d273fc80900aedee52ead87597fa824b3e56e82e451d4c2b4d
|
||||
32a423279a668bb6690c7e9956e90cfe766cb37b077538abd27a8b1cba48c80acc2a841f12e698f13a9e281c57911ce298950d7e03aba84ac8c154f8655c4f2a
|
||||
f074481847bd804859b5e696007d4b4edfc150b12addbecba6b18b148a1e54d1bc81392f23b7f84137c2715a851dd0242a633f900710a218ed715505dfe56e86
|
||||
e877f0034e16bafb0e258ebb4faf06b769e888340b103d331115bebc4eb813bf83291b63624a0d1475a756c734f9bbc2cd28546ecbe1e20a3794ca175f3fae90
|
||||
fb6d2dd99bb07b55e5ccf68942bd0877b23c77b908e8db5f9db7f024d9239010f35bd4bbe2fcae387bfff9e2bc289f2fbe24cfaa301468dd8bd846dbb4ddf1c2
|
||||
ae7b4c191ba8292337a469bc25ec3d411f06f53a73e224c5292c8de0516732307070a1c0660d125c7d44553488700a4d7bddd3444299910e254ab984c3a219ae
|
||||
a4adf1d0f82b7bd46cea4388ad1c12ab5d1ed8e1153d9c9f350a3246aad01c6873462b9ac05999ad5cc988826eafc3acae853a33b7ba11cd1445875ba1b236b1
|
||||
399483c90bd560b0b0263435085a21b0f22a9cf9356b38ec6046026d77eba3dc2dc60b17e92219e180643ed27acffba86e9c94c7ca9c225a0f1b0cfae0788ad5
|
||||
4adc5a9aec1b703b8b93caec1a0bd8e5de7b132fe5113cf312503b998e2c2927274bd051db6b35979b1ef271daf6c6704e86c73805af4bdd476216c26593af84
|
||||
0dfb5393d964f9cc9bad5c313709ea70f561ed3ea7b053075221d51696910d0d339585004b34272bff7213cc7a510a5454a3b349b1b206c1f0af490176745d4b
|
||||
c663e2abb2b34b23da76f6352ba57ca2881844c1111ab189d8c7e07e1daaa04f40255c77988aa05fe06e4e5bdb4cb9c5394bbaf28d98c1d971ccd20867e556a7
|
||||
689ec9166e0a522183792b8907ba55ca6e943bbf2a26e52f48957218ffcf54d1fb09dc3eac04da033e5c0d0b8c74a6b43d2e54c4a10aa511f5fb021a07533b20
|
||||
5ae07e17a621a8e082dafc17e450ffb739676998b48643a4daa7211214f623150942f6a02c99e83b85583ddbbb2c4996113211551257a656ec1139246ca86be0
|
||||
aadedb3d1441a89b6a929501833b197fee7b9641a3503739e57c732a59b1f7da1cf8a73b1f9bcca0945b874d4393dbbf10b1680f66bbaa5d6f96e77b6f59113d
|
||||
316bb31a795600b3d256d0cad2fe354538e7566b2bd69cc6cbcd5c38f0e2bcc63058344429dc2121fd07f63f2a7c66bf76e80d75c8f7a1b622f878a18941d840
|
||||
545fb28d07d205d20e8ea071b283369834296bdaac75d256cb37eb0bee740bbe278cad253b8bbfcf69eca23973d939b97891c6ce2cecd8da8e2d343578f6648a
|
||||
c2d0383fc818c798cf64e52f597c740f1cbd05df0c264c49134cf09d4a60e8a107260f20f92d47b374e32f000000ffff0300504b030414000600080000002100
|
||||
0dd1909fb60000001b010000270000007468656d652f7468656d652f5f72656c732f7468656d654d616e616765722e786d6c2e72656c73848f4d0ac2301484f7
|
||||
8277086f6fd3ba109126dd88d0add40384e4350d363f2451eced0dae2c082e8761be9969bb979dc9136332de3168aa1a083ae995719ac16db8ec8e4052164e89
|
||||
d93b64b060828e6f37ed1567914b284d262452282e3198720e274a939cd08a54f980ae38a38f56e422a3a641c8bbd048f7757da0f19b017cc524bd62107bd500
|
||||
1996509affb3fd381a89672f1f165dfe514173d9850528a2c6cce0239baa4c04ca5bbabac4df000000ffff0300504b01022d0014000600080000002100e9de0f
|
||||
bfff0000001c0200001300000000000000000000000000000000005b436f6e74656e745f54797065735d2e786d6c504b01022d0014000600080000002100a5d6
|
||||
a7e7c0000000360100000b00000000000000000000000000300100005f72656c732f2e72656c73504b01022d00140006000800000021006b799616830000008a
|
||||
0000001c00000000000000000000000000190200007468656d652f7468656d652f7468656d654d616e616765722e786d6c504b01022d00140006000800000021
|
||||
0030dd4329a8060000a41b00001600000000000000000000000000d60200007468656d652f7468656d652f7468656d65312e786d6c504b01022d001400060008
|
||||
00000021000dd1909fb60000001b0100002700000000000000000000000000b20900007468656d652f7468656d652f5f72656c732f7468656d654d616e616765722e786d6c2e72656c73504b050600000000050005005d010000ad0a00000000}
|
||||
{\*\colorschememapping 3c3f786d6c2076657273696f6e3d22312e302220656e636f64696e673d225554462d3822207374616e64616c6f6e653d22796573223f3e0d0a3c613a636c724d
|
||||
617020786d6c6e733a613d22687474703a2f2f736368656d61732e6f70656e786d6c666f726d6174732e6f72672f64726177696e676d6c2f323030362f6d6169
|
||||
6e22206267313d226c743122207478313d22646b3122206267323d226c743222207478323d22646b322220616363656e74313d22616363656e74312220616363
|
||||
656e74323d22616363656e74322220616363656e74333d22616363656e74332220616363656e74343d22616363656e74342220616363656e74353d22616363656e74352220616363656e74363d22616363656e74362220686c696e6b3d22686c696e6b2220666f6c486c696e6b3d22666f6c486c696e6b222f3e}
|
||||
{\*\latentstyles\lsdstimax267\lsdlockeddef0\lsdsemihiddendef1\lsdunhideuseddef1\lsdqformatdef0\lsdprioritydef99{\lsdlockedexcept \lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority0 \lsdlocked0 Normal;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 1;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 2;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 3;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 4;
|
||||
\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 5;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 6;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 7;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 8;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 9;
|
||||
\lsdpriority39 \lsdlocked0 toc 1;\lsdpriority39 \lsdlocked0 toc 2;\lsdpriority39 \lsdlocked0 toc 3;\lsdpriority39 \lsdlocked0 toc 4;\lsdpriority39 \lsdlocked0 toc 5;\lsdpriority39 \lsdlocked0 toc 6;\lsdpriority39 \lsdlocked0 toc 7;
|
||||
\lsdpriority39 \lsdlocked0 toc 8;\lsdpriority39 \lsdlocked0 toc 9;\lsdqformat1 \lsdpriority35 \lsdlocked0 caption;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority10 \lsdlocked0 Title;\lsdpriority1 \lsdlocked0 Default Paragraph Font;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority11 \lsdlocked0 Subtitle;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority22 \lsdlocked0 Strong;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority20 \lsdlocked0 Emphasis;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority59 \lsdlocked0 Table Grid;\lsdunhideused0 \lsdlocked0 Placeholder Text;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority1 \lsdlocked0 No Spacing;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading;\lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List;\lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List;\lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List;\lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid;\lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading Accent 1;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 1;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1 Accent 1;\lsdunhideused0 \lsdlocked0 Revision;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority34 \lsdlocked0 List Paragraph;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority29 \lsdlocked0 Quote;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority30 \lsdlocked0 Intense Quote;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2 Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 1;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading Accent 1;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading Accent 2;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 2;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1 Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2 Accent 2;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 2;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List Accent 2;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List Accent 3;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 3;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1 Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2 Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 3;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List Accent 3;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid Accent 3;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid Accent 4;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1 Accent 4;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2 Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 4;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading Accent 4;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading Accent 5;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 5;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1 Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2 Accent 5;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 5;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List Accent 5;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List Accent 6;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 6;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1 Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2 Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 6;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List Accent 6;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid Accent 6;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority19 \lsdlocked0 Subtle Emphasis;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority21 \lsdlocked0 Intense Emphasis;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority31 \lsdlocked0 Subtle Reference;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority32 \lsdlocked0 Intense Reference;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority33 \lsdlocked0 Book Title;\lsdpriority37 \lsdlocked0 Bibliography;\lsdqformat1 \lsdpriority39 \lsdlocked0 TOC Heading;}}{\*\datastore 010500000200000018000000
|
||||
4d73786d6c322e534158584d4c5265616465722e362e3000000000000000000000060000
|
||||
d0cf11e0a1b11ae1000000000000000000000000000000003e000300feff090006000000000000000000000001000000010000000000000000100000feffffff00000000feffffff0000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
|
||||
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
|
||||
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
|
||||
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
|
||||
fffffffffffffffffdfffffffeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
|
||||
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
|
||||
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
|
||||
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
|
||||
ffffffffffffffffffffffffffffffff52006f006f007400200045006e00740072007900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016000500ffffffffffffffffffffffff0c6ad98892f1d411a65f0040963251e5000000000000000000000000d01a
|
||||
33a871d2cb01feffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff00000000000000000000000000000000000000000000000000000000
|
||||
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000
|
||||
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000105000000000000}}
|
||||
@@ -0,0 +1,240 @@
|
||||
//
|
||||
// (C) Copyright 2003-2019 by Autodesk, Inc.
|
||||
//
|
||||
// Permission to use, copy, modify, and distribute this software in
|
||||
// object code form for any purpose and without fee is hereby granted,
|
||||
// provided that the above copyright notice appears in all copies and
|
||||
// that both that copyright notice and the limited warranty and
|
||||
// restricted rights notice below appear in all supporting
|
||||
// documentation.
|
||||
//
|
||||
// AUTODESK PROVIDES THIS PROGRAM "AS IS" AND WITH ALL FAULTS.
|
||||
// AUTODESK SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTY OF
|
||||
// MERCHANTABILITY OR FITNESS FOR A PARTICULAR USE. AUTODESK, INC.
|
||||
// DOES NOT WARRANT THAT THE OPERATION OF THE PROGRAM WILL BE
|
||||
// UNINTERRUPTED OR ERROR FREE.
|
||||
//
|
||||
// Use, duplication, or disclosure by the U.S. Government is subject to
|
||||
// restrictions set forth in FAR 52.227-19 (Commercial Computer
|
||||
// Software - Restricted Rights) and DFAR 252.227-7013(c)(1)(ii)
|
||||
// (Rights in Technical Data and Computer Software), as applicable.
|
||||
//
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Xml.Linq;
|
||||
using System.Text;
|
||||
using Autodesk.Revit.DB;
|
||||
using Autodesk.Revit.UI;
|
||||
|
||||
namespace Revit.SDK.Samples.ProximityDetection_WallJoinControl.CS
|
||||
{
|
||||
/// <summary>
|
||||
/// The class that is responsible for controlling the joint of walls
|
||||
/// </summary>
|
||||
public class WallJoinControl
|
||||
{
|
||||
/// <summary>
|
||||
/// The singleton instance of WallJoinControl
|
||||
/// </summary>
|
||||
private static WallJoinControl Instance;
|
||||
|
||||
/// <summary>
|
||||
/// revit application
|
||||
/// </summary>
|
||||
private Autodesk.Revit.ApplicationServices.Application m_app;
|
||||
/// <summary>
|
||||
/// revit document
|
||||
/// </summary>
|
||||
private Autodesk.Revit.DB.Document m_doc;
|
||||
|
||||
/// <summary>
|
||||
/// Constructor
|
||||
/// </summary>
|
||||
/// <param name="app">Revit application</param>
|
||||
/// <param name="doc">Revit document</param>
|
||||
private WallJoinControl(
|
||||
Autodesk.Revit.ApplicationServices.Application app,
|
||||
Autodesk.Revit.DB.Document doc)
|
||||
{
|
||||
m_app = app;
|
||||
m_doc = doc;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Get the singleton instance of WallJoinControl
|
||||
/// </summary>
|
||||
/// <param name="app">Revit application</param>
|
||||
/// <param name="doc">Revit document</param>
|
||||
/// <returns>The singleton instance of WallJoinControl</returns>
|
||||
public static WallJoinControl getInstance(
|
||||
Autodesk.Revit.ApplicationServices.Application app,
|
||||
Autodesk.Revit.DB.Document doc)
|
||||
{
|
||||
if (Instance == null)
|
||||
{
|
||||
Instance = new WallJoinControl(app, doc);
|
||||
}
|
||||
return Instance;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Check every wall's joined walls by WallUtils method in initial, after disallow join, then after allow join states
|
||||
/// </summary>
|
||||
/// <param name="walls">The walls to be checked</param>
|
||||
/// <returns>The check result</returns>
|
||||
public XElement checkJoinedWalls(IEnumerable<Wall> walls)
|
||||
{
|
||||
// create a node that place all walls.
|
||||
XElement wallsNode = new XElement("Walls", new XAttribute("Name", "Walls"));
|
||||
|
||||
try
|
||||
{
|
||||
foreach (Wall wall in walls)
|
||||
{
|
||||
// create a wall node
|
||||
XElement wallNode = new XElement("Wall",
|
||||
new XAttribute("name", wall.Name),
|
||||
new XAttribute("Type", wall.WallType.Kind.ToString()));
|
||||
|
||||
LocationCurve locationCurve = wall.Location as LocationCurve;
|
||||
if (null == locationCurve)
|
||||
{
|
||||
wallNode.Add(new XElement("Error",
|
||||
new XAttribute("Exception", "This wall has not a LocationCurve!")));
|
||||
}
|
||||
else
|
||||
{
|
||||
// start
|
||||
XElement endNode = new XElement("Start", new XAttribute("Name", "Start"));
|
||||
wallNode.Add(checkWallEnd(wall, locationCurve, 0, endNode));
|
||||
|
||||
// end
|
||||
endNode = new XElement("End", new XAttribute("Name", "End"));
|
||||
wallNode.Add(checkWallEnd(wall, locationCurve, 1, endNode));
|
||||
}
|
||||
wallsNode.Add(wallNode);
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
wallsNode.Add(new XElement("Error", new XAttribute("Exception", ex.ToString())));
|
||||
}
|
||||
|
||||
// return the whole walls Node
|
||||
return wallsNode;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Check wall's two ends in three states
|
||||
/// </summary>
|
||||
/// <param name="wall">The wall to be checked</param>
|
||||
/// <param name="locationCurve">The wall's location curve</param>
|
||||
/// <param name="end">The index indicates the start or end of this wall</param>
|
||||
/// <param name="endnode">Result XML node</param>
|
||||
/// <returns>The check result</returns>
|
||||
private XElement checkWallEnd(Wall wall, LocationCurve locationCurve, int end, XElement endnode)
|
||||
{
|
||||
// Initial state
|
||||
XElement stateNode = new XElement("Initial", new XAttribute("Name", "Initial"));
|
||||
endnode.Add(GetState(wall, locationCurve, end, stateNode));
|
||||
|
||||
// Disallow join
|
||||
WallUtils.DisallowWallJoinAtEnd(wall, end);
|
||||
|
||||
// After DisallowWallJoinAtEnd Evoked state
|
||||
stateNode = new XElement("After_DisallowWallJoinAtEnd_Evoked",
|
||||
new XAttribute("Name", "After_DisallowWallJoinAtEnd_Evoked"));
|
||||
endnode.Add(GetState(wall, locationCurve, end, stateNode));
|
||||
|
||||
// Allow join
|
||||
WallUtils.AllowWallJoinAtEnd(wall, end);
|
||||
|
||||
// After AllowWallJoinAtEnd Evoked state
|
||||
stateNode = new XElement("After_DisallowWallJoinAtEnd_Evoked",
|
||||
new XAttribute("Name", "After_DisallowWallJoinAtEnd_Evoked"));
|
||||
endnode.Add(GetState(wall, locationCurve, end, stateNode));
|
||||
|
||||
return endnode;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Get wall's one end state
|
||||
/// </summary>
|
||||
/// <param name="wall">The wall to be checked</param>
|
||||
/// <param name="locationCurve">The wall's location curve</param>
|
||||
/// <param name="end">The index indicates the start or end of this wall</param>
|
||||
/// <param name="statenode">Result XML node</param>
|
||||
/// <returns>The check result</returns>
|
||||
private XElement GetState(Wall wall, LocationCurve locationCurve, int end, XElement statenode)
|
||||
{
|
||||
// Get geometry information
|
||||
statenode.Add(GetGeometryInfo(locationCurve, end));
|
||||
// Get IsWallJoinAllowedAtEnd API method's result
|
||||
statenode.Add(GetIsWallJoinAllowedAtEnd(wall, end));
|
||||
// Get all joined walls
|
||||
statenode.Add(GetJoinedWalls(locationCurve, end));
|
||||
|
||||
return statenode;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Get wall's one end geometry information
|
||||
/// </summary>
|
||||
/// <param name="locationCurve">The wall's location curve</param>
|
||||
/// <param name="end">The index indicates the start or end of this wall</param>
|
||||
/// <returns>The check result</returns>
|
||||
private XElement GetGeometryInfo(LocationCurve locationCurve, int end)
|
||||
{
|
||||
XElement geometryinfoNode = new XElement("GeometryInfo");
|
||||
// Output LocationCurve end point coordinate
|
||||
XYZ endpoint = locationCurve.Curve.GetEndPoint(end);
|
||||
geometryinfoNode.Add(new XElement("PointCoordinate",
|
||||
new XAttribute("X", Math.Round(endpoint.X, 9).ToString()),
|
||||
new XAttribute("Y", Math.Round(endpoint.Y, 9).ToString()),
|
||||
new XAttribute("Z", Math.Round(endpoint.Z, 9).ToString())));
|
||||
|
||||
return geometryinfoNode;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Get wall's one end IsWallJoinAllowedAtEnd API method's result
|
||||
/// </summary>
|
||||
/// <param name="wall">The wall to be checked</param>
|
||||
/// <param name="end">The index indicates the start or end of this wall</param>
|
||||
/// <returns>The check result</returns>
|
||||
private XElement GetIsWallJoinAllowedAtEnd(Wall wall, int end)
|
||||
{
|
||||
return new XElement("IsWallJoinAllowedAtEnd",
|
||||
new XAttribute("Value", WallUtils.IsWallJoinAllowedAtEnd(wall, end)));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Get wall's one end all joined walls
|
||||
/// </summary>
|
||||
/// <param name="locationCurve">The wall's location curve</param>
|
||||
/// <param name="end">The index indicates the start or end of this wall</param>
|
||||
/// <returns>The check result</returns>
|
||||
private XElement GetJoinedWalls(LocationCurve locationCurve, int end)
|
||||
{
|
||||
// retrieve joined elements
|
||||
ElementArray array = locationCurve.get_ElementsAtJoin(end);
|
||||
|
||||
XElement joinedwallsNode = new XElement("JoinedWalls",
|
||||
new XAttribute("Count", array.Size.ToString()));
|
||||
|
||||
// output array
|
||||
foreach (Element ele in array)
|
||||
{
|
||||
if (ele is Wall)
|
||||
{
|
||||
joinedwallsNode.Add(new XElement("JoinedWall",
|
||||
new XAttribute("Name", ele.Name)));
|
||||
}
|
||||
}
|
||||
|
||||
return joinedwallsNode;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user