copied Revit 2024 SDK

This commit is contained in:
Jeremy Tammik
2023-04-26 14:47:47 +02:00
parent 2ca39e38fd
commit 4d69f3eea5
425 changed files with 344414 additions and 2296 deletions
@@ -0,0 +1,275 @@
To successfully build StructuralConnectionsSamples.sln open StructuralConnectionsSDKSamples.Common.props in any text editor and edit ASInstallDir property with the corresponding path for Revit installation (e.g. C:\Program Files\Autodesk\Revit2024\AddIns\SteelConnections)
//////////////////////////////Joint config xml////////////////////////////////////////////////////////////////
1. Create a folder named ThirdPartySettings under the C:\ProgramData\Autodesk\Revit Steel Connections 2024 \en-US\
2. Under the ThirdPartySettings folder create an .xml with the following contents (check SteelConnectionsSampleJoints.xml provided with the samples):
<?xml version="1.0" encoding="utf-8"?>
<PaletteData Version="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<ResourceDll>SteelConnectionsDotNetJointExample.dll</ResourceDll>
<PreviewResourceDll>SteelConnectionsDotNetJointExample.dll</PreviewResourceDll>
<Categories>
<PaletteCategory>
<Name>Plates at beam</Name>
<Image>ResDummy.png</Image>
<Items>
<PaletteItem>
<Description>Steel Connections Sample Joint</Description>
<Command>SteelConnectionsJointExample</Command>
<PreviewText>This is my test joint</PreviewText>
<Images>
<string>Dummy.png</string>
</Images>
<PreviewImages>
<string>ResDummy.png</string>
</PreviewImages>
<TypeId>E8BB9834-E1A2-4644-9C59-1C9812C04E8E</TypeId>
</PaletteItem>
</Items>
</PaletteCategory>
<PaletteCategory>
<Name>Net joint</Name>
<Image>ResDummy.png</Image>
<Items>
<PaletteItem>
<Description>Bridge Girder DotNet Example</Description>
<Command>BridgeGirderSample</Command>
<PreviewText>This is my test joint 2</PreviewText>
<Images>
<string>Dummy.png</string>
</Images>
<PreviewImages>
<string>ResDummy.png</string>
</PreviewImages>
<TypeId>36c78249-132f-4037-9822-3802a5cf9345</TypeId>
</PaletteItem>
</Items>
</PaletteCategory>
<PaletteCategory>
<Name>Net joint</Name>
<Image>ResDummy.png</Image>
<Items>
<PaletteItem>
<Description>Lap Joint Example</Description>
<Command>LapJoint</Command>
<PreviewText>This is my Lap joint</PreviewText>
<Images>
<string>Dummy.png</string>
</Images>
<PreviewImages>
<string>ResDummy.png</string>
</PreviewImages>
<TypeId>B2E820AB-A8BD-4998-878C-1BE4364B1BD9</TypeId>
</PaletteItem>
</Items>
</PaletteCategory>
<PaletteCategory>
<Name>Net joint clip angle</Name>
<Image>ResDummy.png</Image>
<Items>
<PaletteItem>
<Description>Steel Connections Clip Angle Example</Description>
<Command>SampleClipAngle</Command>
<PreviewText>This is my test joint 3</PreviewText>
<Images>
<string>Dummy.png</string>
</Images>
<PreviewImages>
<string>ResDummy.png</string>
</PreviewImages>
<TypeId>8B4FDDC8-946A-49B4-AF65-AC54C5615AB1</TypeId>
</PaletteItem>
</Items>
</PaletteCategory>
<PaletteCategory>
<Name>Native Sample Clip Angle</Name>
<Image>ResDummy.png</Image>
<Items>
<PaletteItem>
<Description>Steel Connections Native Clip Angle</Description>
<Command>SampleClipAngleNative</Command>
<PreviewText>C++ Native Clip Angle Example</PreviewText>
<Images>
<string>Dummy.png</string>
</Images>
<PreviewImages>
<string>ResDummy.png</string>
</PreviewImages>
<TypeId>FD62E6AB-0412-4F2B-9DB8-C5D5385F8042</TypeId>
</PaletteItem>
</Items>
</PaletteCategory>
</Categories>
</PaletteData>
/////////////////////////////////SteelConnectionsJointExample //////////////////////////////////////
1. Build the "SteelConnectionsJointExample" and "SampleDesign" projects.
2. Copy "SteelConnectionsJointExample.dll and "SampleDesign.dll" from "..\SDK\Samples\Binaries" to your local Revit installation under AddIns\SteelConnections subfolder (e.g." C:\Program Files\Autodesk\Revit 2024\AddIns\SteelConnections\”)
3. Add a record in the AstorRules.RulesDllSigned table for SteelConnectionsJointExample.dll
Key: an integer outside the standard Revit range (e.g.: 20000)
FileName: SteelConnectionsJointExample.dll
Tech: 1
4. Add a record in the AstorRules.HRLDefinition for SteelConnectionsJointExample.dll
Key: an integer outside the standard Revit range (e.g.: 20000)
RuleRunName: SteelConnectionsJointExample
InternalName: SteelConnectionsJointExample
Category: SteelConnectionsJointExample
Dll: - dll key set in step 3 (20000)
ClassId: {E8BB9834-E1A2-4644-9C59-1C9812C04E8E}
Version: 24
5. Run the script "dbo.RULE_CreatePlate.sql" inside AstorRules.mdf creating a table called "RULE_CreatePlate". (found under ..\Samples\Projects\SampleJoint)
6. Add a record in the table AstorJointsCalculation.NSAModuleDllSigned with the following values for each column:
Key: 12 (or an integer outside the standard Revit range - e.g.: 17000)
FileName: SampleDesign.dll
Tech: 1
7. Add a record in the table AstorJointsCalculation.NSAModule with the following values for each column:
Key: 59 (or an integer outside the standard Revit range - e.g.: 18000)
StressAnalysisCodeID: 1
JointInternalName: SteelConnectionsJointExample
NSAModuleInternalName: CreatePlateDesign_NSAModule
DefaultModule: 1
SortOrder: 1
8. Add a record in the table AstorJointsCalculation.NSAModuleDefinition with the following values for each column:
Key: 59 (or an integer outside the standard Revit range - e.g.: 170000) make sure to use the same key from step (7).
ModuleRunName: SampleDesign
InternalName: CreatePlateDesign_NSAModule
NSAModuleDll: 12
ClassID: {C64ECF63-D01C-451F-B0E0-E3F85DFAC05E}
9. Open Revit and create a structural column (make sure the connection to the databases is closed after adding the values above, before starting Revit).
10. Open the connection Settings Dialog from the Steel” tab and load the connection
11. Use the “Connection” button on the “Steel” tab to apply the connection on the column created at step 12.
/////////////////////////////////SteelConnectionsDotNetJointExample//////////////////////////////////////
1. Build the project SteelConnectionsDotNetJointExample
2. Copy "SteelConnectionsDotNetJointExample.dll from "..\SDK\Samples\Binaries" to your local Revit installation under AddIns\SteelConnections subfolder (e.g." C:\Program Files\Autodesk\Revit 2024\AddIns\SteelConnections\”)
3. Add a record in the AstorRules.RulesDllSigned table for SteelConnectionsDotNetJointExample.dll
Key: an integer outside the standard Revit range (e.g.: 20001)
FileName: SteelConnectionsDotNetJointExample.dll
Tech: 2
4. Add a record in the AstorRules.HRLDefinition for SteelConnectionsDotNetJointExample.dll
Key: an integer outside the standard Revit range (e.g.: 170000)
RuleRunName: BridgeGirderSample
InternalName: BridgeGirderSample
Category: BridgeGirderSample
Dll: - dll key set in step 3
SubNameInDll: SteelConnectionsDotNetJointExample.BridgeGirderSample
ClassId: {36c78249-132f-4037-9822-3802a5cf9345}
Version: 24
5. Open Revit and create a structural beam (make sure the connection to the databases is closed after adding the values above, before starting Revit).
6. Open the connection Settings Dialog from the Steel” tab “Add” the “Steel Connection Joint DotNet Example“ connection in the right pane.
8 .Use the “Connection” button on the “Steel” tab to apply the connection on the beam created at step 5.
/////////////////////////////////SampleLapJoint//////////////////////////////////////
1. Build the project SampleLapJoint
2. Copy "SampleLapJoint.dll from "..\SDK\Samples\Binaries" to your local Revit installation under AddIns\SteelConnections subfolder (e.g." C:\Program Files\Autodesk\Revit 2024\AddIns\SteelConnections\”)
3. Add a record in the AstorRules.RulesDllSigned table for SampleLapJoint.dll
Key: an integer outside the standard Revit range (e.g.: 20001)
FileName: SampleLapJoint.dll
Tech: 2
4. Add a record in the AstorRules.HRLDefinition for SampleLapJoint.dll
Key: an integer outside the standard Revit range (e.g.: 170000)
RuleRunName: LapJoint
InternalName: LapJoint
Category: LapJoint
Dll: - dll key set in step 3
SubNameInDll: SampleLapJoint.LapJoint
ClassId: {B2E820AB-A8BD-4998-878C-1BE4364B1BD9}
Version: 24
5. Open Revit and create two structural overlapping flat beams (make sure the connection to the databases is closed after adding the values above, before starting Revit).
6. Open the connection Settings Dialog from the Steel” tab “Add” the “Lap Joint Example“ connection in the right pane.
8 .Use the “Connection” button on the “Steel” tab to apply the connection on the beam created at step 5.
/////////////////////////////////SampleClipAngle//////////////////////////////////////
1.Build the project SampleClipAngle
2.Copy " SampleClipAngle.dll from "..\SDK\Samples\Binaries" to your local Revit installation under AddIns\SteelConnections subfolder (e.g." C:\Program Files\Autodesk\Revit 2024\AddIns\SteelConnections\”)
3.Add a record in the AstorRules.RulesDllSigned table for SampleClipAngle.dll
Key: an integer outside the standard Revit range (e.g.: 20002)
FileName: SampleClipAngle.dll
Tech: 1
4. Add a record in the AstorRules.HRLDefinition for SampleClipAngle.dll
Key: an integer outside the standard Revit range (e.g.: 20002)
RuleRunName: SampleClipAngle
InternalName: SampleClipAngle
Category: SampleClipAngle
Dll: - dll key set in step rulesDLLSigned table
SubNameInDll: SampleClipAngle
ClassId: {8B4FDDC8-946A-49B4-AF65-AC54C5615AB1}
Version: 24
5. Open Revit and create a structural column, and a structural beam perpendicular on the column (make sure the connection to the databases is closed after adding the values above, before starting Revit).
6. Open the connection Settings Dialog from the Steel” tab “Add” the “Steel Connections Clip Angle Example“ connection in the right pane.
7 .Use the “Connection” button on the “Steel” tab to apply the connection on the beam created at step 5.
/////////////////////////////////SampleClipAngleNative//////////////////////////////////////
1.Build the project SampleClipAngleNative
2.Copy " SampleClipAngleNative.dll from "..\SDK\Samples\Binaries" to your local Revit installation under AddIns\SteelConnections subfolder (e.g." C:\Program Files\Autodesk\Revit 2024\AddIns\SteelConnections\”)
3.Add a record in the AstorRules.RulesDllSigned table for SampleClipAngleNative.dll
Key: an integer outside the standard Revit range (e.g.: 20003)
FileName: SampleClipAngleNative.dll
Tech: 0
4. Add a record in the AstorRules.HRLDefinition for SampleClipAngleNative.dll
Key: an integer outside the standard Revit range (e.g.: 20003)
RuleRunName: SampleClipAngleNative
InternalName: SampleClipAngleNative
Category: SampleClipAngleNative
Dll: - dll key set in step rulesDLLSigned table
SubNameInDll: SampleClipAngleNative
ClassId: {FD62E6AB-0412-4F2B-9DB8-C5D5385F8042}
Version: 24
5. Open Revit and create a structural column, and a structural beam perpendicular on the column (make sure the connection to the databases is closed after adding the values above, before starting Revit).
6. Open the connection Settings Dialog from the Steel” tab “Add” the “Steel Connections Native Clip Angle “ connection in the right pane.
7 .Use the “Connection” button on the “Steel” tab to apply the connection on the beam created at step 5.
@@ -0,0 +1,36 @@
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("SampleClipAngle")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("Autodesk, Inc.")]
[assembly: AssemblyProduct("SampleClipAngle")]
[assembly: AssemblyCopyright("Copyright © Autodesk, Inc. 2022")]
[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("8cff2bfd-0e4d-4a20-95f4-c1fd4bdf0703")]
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
@@ -0,0 +1,468 @@
using AstSTEELAUTOMATIONLib;
using DSCODBCCOMLib;
using System;
using System.Runtime.InteropServices;
namespace SampleClipAngle
{
[ComVisible(true)]
[Guid("8B4FDDC8-946A-49B4-AF65-AC54C5615AB1")]
public class SampleClipAngle : IRule
{
private Joint m_Joint = null;
public String m_sProfType;
public String m_sProfSize;
public String m_sBoltsStandard;
public String m_sBoltsMaterial;
public String m_sBoltsSet;
public double m_dBoltsDiameter;
private SampleClipUI m_GUI = null;
private void SplitBeamsInternalName(string fullInternal, out string classInternal, out string sectionInternal)
{
const string separator = "#@§@#";
classInternal = string.Empty;
sectionInternal = string.Empty;
int position = fullInternal.IndexOf(separator);
if (position > 0)
{
classInternal = fullInternal.Substring(0, position);
sectionInternal = fullInternal.Substring(position + separator.Length);
}
}
public void Query(AstUI pAstUI)
{
IClassFilter classFilter;
classFilter = pAstUI.GetClassFilter();
classFilter.AppendAcceptedClass(eClassType.kBeamStraightClass);
//Declare the input objects
AstObjectsArr inputObjectsArr = m_Joint.CreateObjectsArray();
//Get the column
eUIErrorCodes errCode;
IAstObject selectedColumn = pAstUI.AcquireSingleObject(163, out errCode);
//selection incorrect
if (errCode == eUIErrorCodes.kUIError)
return;
//user abort the selection
if (errCode == eUIErrorCodes.kUICancel)
return;
//add selected object to the input objects array
if (selectedColumn != null)
inputObjectsArr.Add(selectedColumn);
//Get the beam
IAstObject selectedBeam = pAstUI.AcquireSingleObject(163, out errCode);
//selection incorrect
if (errCode == eUIErrorCodes.kUIError)
return;
//user abort the selection
if (errCode == eUIErrorCodes.kUICancel)
return;
//add selected object to the input objects array
if (selectedBeam != null)
inputObjectsArr.Add(selectedBeam);
//add all the objects selected by the user(input objects)
m_Joint.InputObjects = inputObjectsArr;
IOdbcUtils tableUtils = new DSCODBCCOMLib.OdbcUtils();
string defAngle = tableUtils.GetDefaultString(0, "HyperSectionW");
SplitBeamsInternalName(defAngle, out m_sProfType, out m_sProfSize);
m_sBoltsStandard = tableUtils.GetDefaultString(401, "Norm");
m_sBoltsMaterial = tableUtils.GetDefaultString(401, "Material");
m_sBoltsSet = tableUtils.GetDefaultString(401, "Garnitur");
m_dBoltsDiameter = tableUtils.GetDefaultDouble(401, "Diameter");
}
public void InField(IFiler pFiler)
{
int version = pFiler.readVersion(); //Returns the current rule version.
m_sProfType = (string)pFiler.readItem("ProfType");
m_sProfSize = (string)pFiler.readItem("ProfSize");
m_dBoltsDiameter = (double)pFiler.readItem("BoltsDiameter");
m_sBoltsStandard = (string)pFiler.readItem("BoltsStandard");
m_sBoltsMaterial = (string)pFiler.readItem("BoltsMaterial");
m_sBoltsSet = (string)pFiler.readItem("BoltsSet");
}
public void OutField(IFiler pFiler)
{
pFiler.writeVersion(1); //Set the current rule version
pFiler.writeItem(m_sProfType, "ProfType");
pFiler.writeItem(m_sProfSize, "ProfSize");
pFiler.writeItem(m_dBoltsDiameter, "BoltsDiameter");
pFiler.writeItem(m_sBoltsStandard, "BoltsStandard");
pFiler.writeItem(m_sBoltsMaterial, "BoltsMaterial");
pFiler.writeItem(m_sBoltsSet, "BoltsSet");
}
public string GetTableName()
{
return "";
}
//Returns the beam cs at the given point
private void GetBeamCSAtPoint(IBeam beam, IPoint3d point, out ICS3d cs)
{
//Get the beam cs at start
ICS3d startCS = beam.getSysCSAt(eBeamEnd.kBeamStart);
IMatrix3d alignMatrix;
//Get the closest point on the system line to the input point
IPoint3d closestPoint = beam.getClosestPointToSystemline(point, false);
cs = beam.getCSAtPoint(closestPoint);
//Get the transform matrix for the cs at the input point
alignMatrix = startCS.SetToAlignCS(cs);
//Change the closest point to the cs origin
closestPoint.setFrom(cs.Origin);
//Get the offset of the beam system
IVector3d spOffsetVector = beam.GetCurrentSys2Phys3dOffset();
//Transform and translate the cs
spOffsetVector.TransformBy(alignMatrix);
closestPoint.Add(spOffsetVector);
cs.Origin = closestPoint;
}
IPoint3dArray IntersectBeam(IStraightBeam beam, IPoint3d linePt, IVector3d lineVect)
{
//Create a line from the input point and vector
ILine3d line = (ILine3d)(new DSCGEOMCOMLib.Line3d());
line.CreateFromVectorAndPoint(linePt, lineVect);
//Get the body of the column
IAstModeler bodyColumn = beam.getAstModeler(eBodyContext.kBodyUnNotched);
//Interect it with the line
IPoint3dArray result = bodyColumn.intersectWithLine(line);
//Return the resulted intersection points
return result;
}
IPlane GetFacePlane(IStraightBeam inputColumn, IStraightBeam inputBeam)
{
//Result plane
IPlane plane = (IPlane)(new DSCGEOMCOMLib.plane());
//Get the beam outer cs
eBeamEnd beamStart;
ICS3d outerCS;
inputBeam.getCutOuterCS(true, inputColumn, -1, out outerCS, out beamStart, true);
//Change the z vector direction
IVector3d outerVectZ = outerCS.ZAxis;
outerVectZ.Multiply(-1);
IPoint3d outerCSOrigin = outerCS.Origin;
//Get the column cs at the outer cs origin
ICS3d mainCSAtPoint;
GetBeamCSAtPoint(inputColumn, outerCSOrigin, out mainCSAtPoint);
//Compute tranformation matrix
IPoint3d axisPoint = mainCSAtPoint.Origin;
ICS3d midCS = inputColumn.PhysicalCSMid;
IMatrix3d alignMatrix = mainCSAtPoint.SetToAlignCS(midCS);
//Transform the points which will constitute the line which we want to intersect with the beam
axisPoint.TransformBy(alignMatrix);
outerVectZ.TransformBy(alignMatrix);
//Get the intersection points
IPoint3dArray intersectionPts = IntersectBeam(inputColumn, axisPoint, outerVectZ);
//If we have intersection points, create a plane at the first intersection point
if (intersectionPts.Count != 0)
{
IPoint3d tempPt = intersectionPts[0];
axisPoint.setFrom(tempPt);
alignMatrix = midCS.SetToAlignCS(mainCSAtPoint);
axisPoint.TransformBy(alignMatrix);
outerVectZ.TransformBy(alignMatrix);
plane.CreateFromPointAndNormal(axisPoint, outerVectZ);
}
return plane;
}
private void MovePoint(IPoint3d ptIn, IVector3d vMove, double moveDist, out IPoint3d retPoint)
{
retPoint = (IPoint3d)(new DSCGEOMCOMLib.Point3d());
retPoint.setFrom(ptIn);
IVector3d v = (IVector3d)(new DSCGEOMCOMLib.Vector3d());
v.setFrom(vMove);
v.Normalize();
v.Multiply(moveDist);
retPoint.Add(v);
}
public void CreateBoltPattern(string boltRole,
double dBoltWidth,
double dBoltHeight,
int nXBolts,
int nYBolts,
ICS3d csBolts,
IStraightBeam cleat1,
IStraightBeam cleat2,
IStraightBeam beam,
ref AstObjectsArr createdObjectsArr)
{
Role role = m_Joint.CreateRole(boltRole); //role object
IBolt bolt = m_Joint.CreateBoltFinitRect(role, m_sBoltsMaterial, m_sBoltsStandard, 0, 0, dBoltHeight, dBoltWidth, nXBolts, nYBolts, m_dBoltsDiameter, csBolts);
if (bolt != null)
{
AstObjectsArr conObj = m_Joint.CreateObjectsArray();
conObj.Add(cleat1);
if (cleat2 != null)
conObj.Add(cleat2);
conObj.Add(beam);
bolt.Connect(conObj, eAssembleLocation.kOnSite);
createdObjectsArr.Add(bolt);
}
}
public void CreateObjects()
{
bool bCreationStatus = true;
//declare the created objects
AstObjectsArr createdObjectsArr = m_Joint.CreateObjectsArray();
try
{
//retrieve the beam & the column from the input objects array
AstObjectsArr arrObjects = m_Joint.InputObjects;
IStraightBeam inputColumn = null;
IStraightBeam inputBeam = null;
if (arrObjects != null)
{
int nObjs = arrObjects.Count;
if (nObjs > 1)
{
IAstObject astObj1 = arrObjects[0];
if (astObj1 != null)
{
if (astObj1.Type == eClassType.kBeamStraightClass)
inputColumn = (IStraightBeam)astObj1;
}
IAstObject astObj2 = arrObjects[1];
if (astObj2 != null)
{
if (astObj2.Type == eClassType.kBeamStraightClass)
inputBeam = (IStraightBeam)astObj2;
}
}
}
if (inputBeam != null && inputColumn != null)
{
ICS3d csColumn = inputColumn.cs;
ICS3d csBeam = inputBeam.cs;
if (csBeam.ZAxis.IsPerpendicularTo(csColumn.ZAxis))
{
//Get the plane where the beam and shortening intersect
IPlane plShortening = GetFacePlane(inputColumn, inputBeam);
eBeamEnd beamCutEnd;
IPoint3d ptClosestOnColumn = (IPoint3d)(new DSCGEOMCOMLib.Point3d());
ptClosestOnColumn.setFrom(plShortening.PointOnPlane);
//Get the beam cs in the closest point on the column
ICS3d csBeamAtIntersectionPoint = inputBeam.getCSAtPoint(ptClosestOnColumn);
//Find the cs where at the beam end that needs to be cut
ICS3d csCutBeam;
inputBeam.getCutOuterCS(true, inputColumn, -1, out csCutBeam, out beamCutEnd, true);
//Add a shortening to trim/extend the beam until it touches the column
IBeamShortening shortening = inputBeam.addBeamShortening(beamCutEnd, plShortening);
if (shortening != null)
createdObjectsArr.Add(shortening);
//Create an L shaped beam as the first clip angle cleat
//We want to put 2 L shaped beams perpendicular to the input beam - on the input beam Z
IProfType profType = (IProfType)(new DSCPROFILESACCESSCOMLib.ProfType());
profType.createProfType(m_sProfType, m_sProfSize);
IVector3d vectLBeamDir = csBeamAtIntersectionPoint.ZAxis;
IVector3d vectLBeamTranslationX = csBeamAtIntersectionPoint.XAxis;
IVector3d vectLBeamTranslationY = csBeamAtIntersectionPoint.YAxis;
//Compute the first cleat it's start/endpoints
IPoint3d ptCleatStart = (IPoint3d)(new DSCGEOMCOMLib.Point3d());
MovePoint(plShortening.PointOnPlane, vectLBeamDir, -100, out ptCleatStart);
//Find the beam we thickness and offset the cleat outside it a bit
IProfType profBeam = inputBeam.getProfType();
double dBeamWeb = profBeam.getGeometricalData(eProfCommonData.kWeb);
MovePoint(ptCleatStart, vectLBeamTranslationY, -dBeamWeb / 2, out ptCleatStart);
IPoint3d ptCleatEnd = (IPoint3d)(new DSCGEOMCOMLib.Point3d());
MovePoint(ptCleatStart, vectLBeamDir, 200, out ptCleatEnd);
//Create a model role for the first cleat
IRole spRole = m_Joint.CreateRole("Angle_Cleat#1");
ICS3d csCleat = (ICS3d)(new DSCGEOMCOMLib.CS3d());
csCleat.setFrom(csBeamAtIntersectionPoint);
csCleat.RotateCSAroundY(Math.PI / 2);
csCleat.RotateCSAroundX(Math.PI);
//Finnaly, create the beam
IStraightBeam firstCleat = m_Joint.CreateStraightBeam(m_sProfType, m_sProfSize, (Role)spRole, ptCleatStart, ptCleatEnd, csCleat);
if (firstCleat != null)
{
firstCleat.refAxis = eProfRefAxis.kLowerLeft;
createdObjectsArr.Add(firstCleat);
//We will move the cleat cs to create the second cleat, therefore save it, for later when we create the bolts
ICS3d csBolts = (ICS3d)(new DSCGEOMCOMLib.CS3d());
csBolts.setFrom(csCleat);
//Perform calculations for the second cleat
IPoint3d ptBoltsOrig = (IPoint3d)(new DSCGEOMCOMLib.Point3d());
ptBoltsOrig.setFrom(ptCleatStart);
MovePoint(ptBoltsOrig, vectLBeamDir, 100, out ptBoltsOrig);
csBolts.Origin = ptBoltsOrig;
MovePoint(ptCleatEnd, vectLBeamTranslationY, dBeamWeb, out ptCleatEnd);
MovePoint(ptCleatStart, vectLBeamTranslationY, dBeamWeb, out ptCleatStart);
ICS3d csCleat2 = (ICS3d)(new DSCGEOMCOMLib.CS3d());
csCleat2.setFrom(csBeamAtIntersectionPoint);
csCleat2.RotateCSAroundZ(Math.PI);
csCleat2.Origin = ptCleatStart;
//Create the cleat
IStraightBeam secondCleat = m_Joint.CreateStraightBeam(m_sProfType, m_sProfSize, (Role)spRole, ptCleatEnd, ptCleatStart, csCleat);
if (secondCleat != null)
{
//Now connect the L shaped beams with bolts on the main column and beam
secondCleat.refAxis = eProfRefAxis.kLowerLeft;
createdObjectsArr.Add(secondCleat);
CreateBoltPattern("Bolt#1", 100, 60, 3, 2, csBolts, firstCleat, secondCleat, inputColumn, ref createdObjectsArr);
csBolts.RotateCSAroundX(Math.PI / 2);
IPoint3d ptCsBoltOrig = (IPoint3d)(new DSCGEOMCOMLib.Point3d());
MovePoint(csBolts.Origin, vectLBeamTranslationX, -50, out ptCsBoltOrig);
MovePoint(ptCsBoltOrig, vectLBeamTranslationY, 40, out ptCsBoltOrig);
csBolts.Origin = ptCsBoltOrig;
CreateBoltPattern("Bolt#2", 50, 60, 3, 1, csBolts, firstCleat, secondCleat, inputBeam, ref createdObjectsArr);
}
}
}
}
}
catch (COMException ex)
{
System.Diagnostics.Debug.WriteLine(ex.Message);
bCreationStatus = false;
}
catch (System.Exception ex)
{
System.Diagnostics.Debug.WriteLine(ex.Message);
bCreationStatus = false;
}
m_Joint.CreationStatus = bCreationStatus;
m_Joint.CreatedObjects = createdObjectsArr;
}
public void GetUserPages(RulePageArray pagesRet, PropertySheetData pPropSheetData)
{
//Set Title(From AstCrtlDb)
pPropSheetData.SheetPrompt = 88270;
//First Page bitmap index(From AstorBitmaps)
pPropSheetData.FirstPageBitmapIndex = 60782;
pPropSheetData.ResizeOption = eGUIDimension.kStandard;
//Property Sheet 1
RulePage rulePage1 = m_Joint.CreateRulePage();
rulePage1.title = 88438; //Base plate layout
m_GUI = new SampleClipUI(this);
rulePage1.hWnd = m_GUI.Handle.ToInt64();
pagesRet.Add(rulePage1);
}
public void FreeUserPages()
{
m_GUI.Close();
m_GUI.Dispose();
}
public void GetExportData(IRuleExportFiler pExportFiler)
{
}
public bool GetFeatureName(ref string FeatureName)
{
FeatureName = "";
return false;
}
public void InvalidFeature(int reserved)
{
}
public bool ConvertFromHRL(HRLConvertFiler filer, string OldHRLRuleName)
{
return false;
}
public Joint Joint
{
set
{
m_Joint = value;
}
get
{
return m_Joint;
}
}
}
}
@@ -0,0 +1,104 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="..\StructuralConnectionsSDKSamples.Common.props" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">x64</Platform>
<ProjectGuid>{8CFF2BFD-0E4D-4A20-95F4-C1FD4BDF0703}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>SampleClipAngle</RootNamespace>
<AssemblyName>SampleClipAngle</AssemblyName>
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<Deterministic>true</Deterministic>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>..\..\Binaries\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<PlatformTarget>x64</PlatformTarget>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>..\..\Binaries\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<PlatformTarget>x64</PlatformTarget>
</PropertyGroup>
<ItemGroup>
<Reference Include="ASRepository">
<SpecificVersion>False</SpecificVersion>
<HintPath>$(ASInstallDir)\ASRepository.dll</HintPath>
</Reference>
<Reference Include="DotNetRoots">
<SpecificVersion>False</SpecificVersion>
<HintPath>$(ASInstallDir)\DotNetRoots.dll</HintPath>
</Reference>
<Reference Include="Autodesk.SteelConnections.ASRvtModeler">
<SpecificVersion>False</SpecificVersion>
<HintPath>$(ASInstallDir)\Autodesk.SteelConnections.ASRvtModeler.dll</HintPath>
</Reference>
<Reference Include="AxInterop.ASTCONTROLSLib">
<Private>False</Private>
<SpecificVersion>False</SpecificVersion>
<HintPath>$(ASInstallDir)\AxInterop.ASTCONTROLSLib.dll</HintPath>
</Reference>
<Reference Include="Interop.AstSTEELAUTOMATIONLib5">
<SpecificVersion>False</SpecificVersion>
<EmbedInteropTypes>True</EmbedInteropTypes>
<HintPath>$(ASInstallDir)\Interop.AstSTEELAUTOMATIONLib5.dll</HintPath>
</Reference>
<Reference Include="Interop.DSCGEOMCOMLib">
<SpecificVersion>False</SpecificVersion>
<EmbedInteropTypes>True</EmbedInteropTypes>
<HintPath>$(ASInstallDir)\Interop.DSCGEOMCOMLib.dll</HintPath>
</Reference>
<Reference Include="Interop.DSCODBCCOMLib">
<EmbedInteropTypes>True</EmbedInteropTypes>
<HintPath>$(ASInstallDir)\Interop.DSCODBCCOMLib.dll</HintPath>
</Reference>
<Reference Include="Interop.DSCPROFILESACCESSCOMLib">
<SpecificVersion>False</SpecificVersion>
<EmbedInteropTypes>True</EmbedInteropTypes>
<HintPath>$(ASInstallDir)\Interop.DSCPROFILESACCESSCOMLib.dll</HintPath>
</Reference>
<Reference Include="Interop.DSCRootsCOMLib">
<EmbedInteropTypes>True</EmbedInteropTypes>
<HintPath>$(ASInstallDir)\Interop.DSCRootsCOMLib.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Drawing" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Net.Http" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="SampleClipAngle.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="SampleClipUI.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="SampleClipUI.Designer.cs">
<DependentUpon>SampleClipUI.cs</DependentUpon>
</Compile>
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="SampleClipUI.resx">
<DependentUpon>SampleClipUI.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>
@@ -0,0 +1,154 @@
namespace SampleClipAngle
{
partial class SampleClipUI
{
/// <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()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(SampleClipUI));
this.label1 = new System.Windows.Forms.Label();
this.label2 = new System.Windows.Forms.Label();
this.label3 = new System.Windows.Forms.Label();
this.label4 = new System.Windows.Forms.Label();
this.label5 = new System.Windows.Forms.Label();
this.axAstComboProfile1 = new AxASTCONTROLSLib.AxAstComboProfile();
this.axBoltStandards1 = new AxASTCONTROLSLib.AxBoltStandards();
this.axAstBMP1 = new AxASTCONTROLSLib.AxAstControls();
((System.ComponentModel.ISupportInitialize)(this.axAstComboProfile1)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.axBoltStandards1)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.axAstBMP1)).BeginInit();
this.SuspendLayout();
//
// label1
//
this.label1.AutoSize = true;
this.label1.Location = new System.Drawing.Point(11, 11);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(62, 13);
this.label1.TabIndex = 0;
this.label1.Text = "Cleat profile";
//
// label2
//
this.label2.AutoSize = true;
this.label2.Location = new System.Drawing.Point(10, 37);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(70, 13);
this.label2.TabIndex = 1;
this.label2.Text = "Bolt Diameter";
//
// label3
//
this.label3.AutoSize = true;
this.label3.Location = new System.Drawing.Point(10, 62);
this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(52, 13);
this.label3.TabIndex = 2;
this.label3.Text = "Bolt Type";
//
// label4
//
this.label4.AutoSize = true;
this.label4.Location = new System.Drawing.Point(10, 87);
this.label4.Name = "label4";
this.label4.Size = new System.Drawing.Size(57, 13);
this.label4.TabIndex = 3;
this.label4.Text = "Bolt Grade";
//
// label5
//
this.label5.AutoSize = true;
this.label5.Location = new System.Drawing.Point(10, 109);
this.label5.Name = "label5";
this.label5.Size = new System.Drawing.Size(72, 13);
this.label5.TabIndex = 4;
this.label5.Text = "Bolt Assembly";
//
// axAstComboProfile1
//
this.axAstComboProfile1.Location = new System.Drawing.Point(89, 11);
this.axAstComboProfile1.Name = "axAstComboProfile1";
this.axAstComboProfile1.OcxState = ((System.Windows.Forms.AxHost.State)(resources.GetObject("axAstComboProfile1.OcxState")));
this.axAstComboProfile1.Size = new System.Drawing.Size(221, 100);
this.axAstComboProfile1.TabIndex = 5;
this.axAstComboProfile1.ProfileChanged += new System.EventHandler(this.axAstComboProfile1_ProfileChanged);
//
// axBoltStandards1
//
this.axBoltStandards1.Location = new System.Drawing.Point(89, 37);
this.axBoltStandards1.Name = "axBoltStandards1";
this.axBoltStandards1.OcxState = ((System.Windows.Forms.AxHost.State)(resources.GetObject("axBoltStandards1.OcxState")));
this.axBoltStandards1.Size = new System.Drawing.Size(221, 202);
this.axBoltStandards1.TabIndex = 6;
this.axBoltStandards1.BoltChanged += new System.EventHandler(this.axBoltStandards1_BoltChanged);
//
// axAstBMP1
//
this.axAstBMP1.Location = new System.Drawing.Point(316, 11);
this.axAstBMP1.Name = "axAstBMP1";
this.axAstBMP1.OcxState = ((System.Windows.Forms.AxHost.State)(resources.GetObject("axAstBMP1.OcxState")));
this.axAstBMP1.Size = new System.Drawing.Size(200, 200);
this.axAstBMP1.TabIndex = 7;
//
// SampleClipUI
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(529, 255);
this.Controls.Add(this.axBoltStandards1);
this.Controls.Add(this.axAstComboProfile1);
this.Controls.Add(this.axAstBMP1);
this.Controls.Add(this.label5);
this.Controls.Add(this.label4);
this.Controls.Add(this.label3);
this.Controls.Add(this.label2);
this.Controls.Add(this.label1);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
this.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
this.Name = "SampleClipUI";
this.ShowIcon = false;
this.ShowInTaskbar = false;
this.Text = "SampleClipUI";
((System.ComponentModel.ISupportInitialize)(this.axAstComboProfile1)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.axBoltStandards1)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.axAstBMP1)).EndInit();
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.Label label1;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.Label label3;
private System.Windows.Forms.Label label4;
private System.Windows.Forms.Label label5;
private AxASTCONTROLSLib.AxBoltStandards axBoltStandards1;
private AxASTCONTROLSLib.AxAstComboProfile axAstComboProfile1;
private AxASTCONTROLSLib.AxAstControls axAstBMP1;
}
}
@@ -0,0 +1,102 @@
using AstSTEELAUTOMATIONLib;
using Autodesk.AdvanceSteel.DotNetRoots;
using System;
using System.Windows.Forms;
namespace SampleClipAngle
{
public partial class SampleClipUI : Form
{
private const int WS_CHILD = 0x40000000;
private SampleClipAngle m_pCurRule;
private bool m_bIsInitialising = true;
public SampleClipUI(SampleClipAngle clipAngleRule)
{
InitializeComponent();
axAstComboProfile1.Location = AstDpi.Scale(axAstComboProfile1.Location);
axBoltStandards1.Location = AstDpi.Scale(axBoltStandards1.Location);
axAstBMP1.Location = AstDpi.Scale(axAstBMP1.Location);
m_pCurRule = clipAngleRule;
axAstComboProfile1.CurrentProfileName = "AISC 15.0 Angle equal#@§@#L4X4X3/8";
axAstComboProfile1.UseFilterClass = true;
axAstComboProfile1.ShowHideAllSections = true;
axAstComboProfile1.AppendAcceptedClassGroup("W");
axAstComboProfile1.CurrentClass = m_pCurRule.m_sProfType;
axAstComboProfile1.CurrentSection = m_pCurRule.m_sProfSize;
axBoltStandards1.BoltStandard = m_pCurRule.m_sBoltsStandard;
axBoltStandards1.BoltMaterial = m_pCurRule.m_sBoltsMaterial;
axBoltStandards1.BoltSet = m_pCurRule.m_sBoltsSet;
axBoltStandards1.BoltDiameter = m_pCurRule.m_dBoltsDiameter;
m_bIsInitialising = false;
}
protected override CreateParams CreateParams
{
get
{
CreateParams cp = base.CreateParams;
cp.Style = cp.Style | WS_CHILD;
return cp;
}
}
private void axAstComboProfile1_ProfileChanged(object sender, EventArgs e)
{
if (!m_bIsInitialising && m_pCurRule != null)
{
IJoint curJoint = m_pCurRule.Joint;
if (!axAstComboProfile1.Enabled)
{
return;
}
if (m_pCurRule.m_sProfType != axAstComboProfile1.CurrentClass ||
m_pCurRule.m_sProfSize != axAstComboProfile1.CurrentSection)
{
m_pCurRule.m_sProfType = axAstComboProfile1.CurrentClass;
m_pCurRule.m_sProfSize = axAstComboProfile1.CurrentSection;
curJoint.SaveData(m_pCurRule);
curJoint.UpdateDrivenConstruction();
}
}
}
private void axBoltStandards1_BoltChanged(object sender, EventArgs e)
{
if (!m_bIsInitialising && m_pCurRule != null)
{
IJoint curJoint = m_pCurRule.Joint;
double tempValueDiameter = axBoltStandards1.BoltDiameter;
string tempValueGrade = axBoltStandards1.BoltMaterial;
string tempValueAssembly = axBoltStandards1.BoltSet;
string tempValueType = axBoltStandards1.BoltStandard;
string jointGrade = m_pCurRule.m_sBoltsMaterial;
string jointAssembly = m_pCurRule.m_sBoltsSet;
string jointType = m_pCurRule.m_sBoltsStandard;
if ((tempValueDiameter != m_pCurRule.m_dBoltsDiameter) ||
(tempValueGrade != jointGrade) ||
(tempValueAssembly != jointAssembly) ||
(tempValueType != jointType))
{
m_pCurRule.m_dBoltsDiameter = tempValueDiameter;
m_pCurRule.m_sBoltsMaterial = tempValueGrade;
m_pCurRule.m_sBoltsSet = tempValueAssembly;
m_pCurRule.m_sBoltsStandard = tempValueType;
curJoint.SaveData(m_pCurRule);
curJoint.UpdateDrivenConstruction();
}
}
}
}
}
@@ -0,0 +1,149 @@
<?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>
<data name="axBoltStandards1.OcxState" mimetype="application/x-microsoft.net.object.binary.base64">
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACFTeXN0
ZW0uV2luZG93cy5Gb3Jtcy5BeEhvc3QrU3RhdGUBAAAABERhdGEHAgIAAAAJAwAAAA8DAAAAUQAAAAIB
AAAAAQAAAAAAAAAAAAAAADwAAAADAAEA1xYAAHAKAABEAAAA/wEAAAAA/////////////////////wAA
AAAAAAAAAAD//v8A//7/AP/+/wAL
</value>
</data>
<data name="axAstComboProfile1.OcxState" mimetype="application/x-microsoft.net.object.binary.base64">
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACFTeXN0
ZW0uV2luZG93cy5Gb3Jtcy5BeEhvc3QrU3RhdGUBAAAABERhdGEHAgIAAAAJAwAAAA8DAAAA/wAAAAIB
AAAAAQAAAAAAAAAAAAAAAOoAAAADAAEA1xYAACsFAABEAAAAAANS4wuRj84RneMAqgBLuFEBAAAAkAFE
QgEAFE1pY3Jvc29mdCBTYW5zIFNlcmlmAQD//v8iQQBJAFMAQwAgADEANQAuADAAIABBAG4AZwBsAGUA
IABlAHEAdQBhAGwAIwBAAKcAQAAjAEwANABYADQAWAAzAC8AOAD//v8VQQBJAFMAQwAgADEANQAuADAA
IABBAG4AZwBsAGUAIABlAHEAdQBhAGwA//7/CEwANABYADQAWAAzAC8AOAAAZQAAAGYAAABoAAAAAP//
//8AAB4AAAAAAAAAAAAL
</value>
</data>
<data name="axAstBMP1.OcxState" mimetype="application/x-microsoft.net.object.binary.base64">
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACFTeXN0
ZW0uV2luZG93cy5Gb3Jtcy5BeEhvc3QrU3RhdGUBAAAABERhdGEHAgIAAAAJAwAAAA8DAAAAKgAAAAIB
AAAAAQAAAAAAAAAAAAAAABUAAAADAAEAVgoAAFYKAABAAAAAAVfrAAAL
</value>
</data>
</root>
@@ -0,0 +1,626 @@
#include "pch.h"
#include "ClipAngle.h"
#include <corecrt_math_defines.h>
#include "NativeClipAnglePage.h"
STDMETHODIMP SampleClipAngle::InterfaceSupportsErrorInfo(REFIID riid)
{
static const IID* arr[] =
{
&IID_ISampleClipAngle,
};
for (int i = 0; i < sizeof(arr) / sizeof(arr[0]); i++)
{
if (IsEqualGUID(*arr[i], riid))
return S_OK;
}
return S_FALSE;
}
STDMETHODIMP SampleClipAngle::get_Joint(IJoint** pVal)
{
if (m_pJoint == NULL)
return E_POINTER;
IJoint* pNewJoint;
HRESULT hr = m_pJoint->QueryInterface(IID_IJoint, (void**)&pNewJoint);
if (SUCCEEDED(hr))
*pVal = pNewJoint;
return hr;
}
STDMETHODIMP SampleClipAngle::put_Joint(IJoint* pVal)
{
HRESULT hr = S_OK;
if (m_pJoint)
{
m_pJoint->Release();
m_pJoint = NULL;
}
if (NULL != pVal)
hr |= pVal->QueryInterface(IID_IJoint, (void**)&m_pJoint);
return hr;
}
void
SampleClipAngle::SplitBeamsInternalName(BSTR fullInternal, BSTR& classInternal, BSTR& sectionInternal)
{
CString intName(fullInternal);
CString intClass = L"";
CString intSection = L"";
int position = -1;
position = intName.Find(CString(L"#@§@#"));
if (position > 0)
{
intClass = intName.Left(position);
intSection = intName.Right(intName.GetLength() - (position + 5));
//set the values in the output parameters
classInternal = intClass.AllocSysString();
sectionInternal = intSection.AllocSysString();
}
else
{
//set default values in the output parameters (empty strings)
classInternal = intClass.AllocSysString();
sectionInternal = intSection.AllocSysString();
}
}
STDMETHODIMP SampleClipAngle::Query(IAstUI* pAstUI)
{
if (!m_pJoint)
return E_FAIL;
HRESULT hr = S_OK;
//create an array to store the input objects
IAstObjectsArrPtr inputObjectsArr;
hr |= m_pJoint->CreateObjectsArray(&inputObjectsArr);
IClassFilterPtr classFilter;
hr |= pAstUI->GetClassFilter(&classFilter);
hr |= classFilter->AppendAcceptedClass(kBeamClass);
eUIErrorCodes errCode;
IAstObjectPtr column, beam;
//Get the column
hr |= pAstUI->AcquireSingleObject(88270, &errCode, &column);
if ((kUICancel == errCode) || (kUINoResult == errCode)) //user abort
{
return E_ABORT;
}
if (SUCCEEDED(hr))
hr |= inputObjectsArr->Add(column);
//select beam to connect
hr |= pAstUI->AcquireSingleObject(88271, &errCode, &beam);
if ((kUICancel == errCode) || (kUINoResult == errCode)) //user abort
{
return E_ABORT;
}
//add the beam in the input objects array
if (SUCCEEDED(hr))
hr |= inputObjectsArr->Add(beam);
//add all the objects selected by the user(input objects)
m_pJoint->put_InputObjects(inputObjectsArr);
IOdbcUtilsPtr tableUtils;
hr |= tableUtils.CreateInstance("DSCOdbcCom.OdbcUtils");
CString angleDefault("HyperSectionW");
BSTR defAngle;
hr |= tableUtils->GetDefaultString(0, angleDefault.AllocSysString(), &defAngle);
SplitBeamsInternalName(defAngle, m_sProfType, m_sProfSize);
CString boltsDiameter("Diameter");
CString boltsStandard("Norm");
CString boltsSet("Garnitur");
CString boltsMaterial("Material");
hr |= tableUtils->GetDefaultDouble(401, boltsDiameter.AllocSysString(), &m_dBoltsDiameter);
hr |= tableUtils->GetDefaultString(401, boltsStandard.AllocSysString(), &m_sBoltsStandard);
hr |= tableUtils->GetDefaultString(401, boltsSet.AllocSysString(), &m_sBoltsSet);
hr |= tableUtils->GetDefaultString(401, boltsMaterial.AllocSysString(), &m_sBoltsMaterial);
return hr;
}
STDMETHODIMP SampleClipAngle::InField(IFiler* pFiler)
{
HRESULT hr = S_OK;
//must be used in order to be able to check rule version
//if changes are required in future releases
long nVer;
hr |= pFiler->readVersion(&nVer);
VARIANT var;
//2.2.1 Sheet 1 "Angle cleat"
hr |= pFiler->readItem(CString("ProfType").AllocSysString(), &var);
m_sProfType = var.bstrVal;
hr |= pFiler->readItem(CString("ProfSize").AllocSysString(), &var);
m_sProfSize = var.bstrVal;
hr |= pFiler->readItem(CString("BoltsDiameter").AllocSysString(), &var);
m_dBoltsDiameter = var.dblVal;
hr |= pFiler->readItem(CString("BoltsStandard").AllocSysString(), &var);
m_sBoltsStandard = var.bstrVal;
hr |= pFiler->readItem(CString("BoltsMaterial").AllocSysString(), &var);
m_sBoltsMaterial = var.bstrVal;
hr |= pFiler->readItem(CString("BoltsSet").AllocSysString(), &var);
m_sBoltsSet = var.bstrVal;
return hr;
}
STDMETHODIMP SampleClipAngle::OutField(IFiler* pFiler)
{
HRESULT hr = S_OK;
hr |= pFiler->writeVersion(1);
//2.2.1 Sheet 1 "Angle cleat"
hr |= pFiler->writeItem(CComVariant(m_sProfType), CString("ProfType").AllocSysString());
hr |= pFiler->writeItem(CComVariant(m_sProfSize), CString("ProfSize").AllocSysString());
hr |= pFiler->writeItem(CComVariant(m_dBoltsDiameter), CString("BoltsDiameter").AllocSysString());
hr |= pFiler->writeItem(CComVariant(m_sBoltsStandard), CString("BoltsStandard").AllocSysString());
hr |= pFiler->writeItem(CComVariant(m_sBoltsMaterial), CString("BoltsMaterial").AllocSysString());
hr |= pFiler->writeItem(CComVariant(m_sBoltsSet), CString("BoltsSet").AllocSysString());
return hr;
}
STDMETHODIMP SampleClipAngle::GetTableName(BSTR* pStrTableName)
{
if (pStrTableName == NULL)
return E_POINTER;
// table name
CString tableName("");
*pStrTableName = tableName.AllocSysString();
return S_OK;
}
STDMETHODIMP SampleClipAngle::CreateObjects()
{
if (!m_pJoint)
return E_FAIL;
HRESULT ruleCreateObjectsMethodStatus = S_OK;
HRESULT hr = S_OK;
//get the joint input objects array - previously saved in Query part
IAstObjectsArrPtr spInObj;
hr |= m_pJoint->get_InputObjects(&spInObj);
//create an array that will contain all the AS objects created by the joint
IAstObjectsArrPtr createdObjects;
hr |= m_pJoint->CreateObjectsArray(&createdObjects);
if (SUCCEEDED(hr))
{
try
{
bool bCreationStatus = true;
//declare the created objects
//retrieve the beam & the column from the input objects array
IBeamPtr inputColumn, inputBeam;
hr |= spInObj->get_Item(CComVariant(0), (IAstObject**)&inputColumn);
hr |= spInObj->get_Item(CComVariant(1), (IAstObject**)&inputBeam);
ICS3dPtr csColumn, csBeam;
hr |= inputColumn->get_cs(&csColumn);
hr |= inputBeam->get_cs(&csBeam);
IVector3dPtr vZColumn, vZBeam;
hr |= csBeam->get_ZAxis(&vZBeam);
hr |= csColumn->get_ZAxis(&vZColumn);
VARIANT_BOOL vectArePerpendicular;
hr |= vZBeam->IsPerpendicularToTol(vZColumn, 0.01, &vectArePerpendicular);
if (VARIANT_TRUE == vectArePerpendicular)
{
//Get the plane where the beam and shortening intersect
IPlanePtr plShortening;
hr |= GetFacePlane(inputColumn, inputBeam, plShortening);
eBeamEnd beamCutEnd;
IPoint3dPtr ptClosestOnColumn;
hr |= plShortening->get_PointOnPlane(&ptClosestOnColumn);
//Get the beam cs in the closest point on the column
ICS3dPtr csBeamAtIntersectionPoint;
hr |= inputBeam->getCSAtPoint(ptClosestOnColumn, &csBeamAtIntersectionPoint);
//Find the cs where at the beam end that needs to be cut
ICS3dPtr csCutBeam;
hr |= inputBeam->getCutOuterCS(VARIANT_TRUE, inputColumn, -1, &csCutBeam, &beamCutEnd, VARIANT_TRUE);
//Add a shortening to trim/extend the beam until it touches the column
IBeamShorteningPtr shortening;
hr |= inputBeam->addBeamShortening(beamCutEnd, plShortening, &shortening);
if (hr == S_OK)
hr |= createdObjects->Add(shortening);
//Create an L shaped beam as the first clip angle cleat
//We want to put 2 L shaped beams perpendicular to the input beam - on the input beam Z
IProfTypePtr profType;
hr |= profType.CreateInstance("DSCProfilesAccessCom.ProfType");
hr |= profType->createProfType(m_sProfType, m_sProfSize);
IVector3dPtr vectLBeamDir, vectLBeamTranslationX, vectLBeamTranslationY;
hr |= csBeamAtIntersectionPoint->get_ZAxis(&vectLBeamDir);
hr |= csBeamAtIntersectionPoint->get_XAxis(&vectLBeamTranslationX);
hr |= csBeamAtIntersectionPoint->get_YAxis(&vectLBeamTranslationY);
//Compute the first cleat it's start/endpoints
IPoint3dPtr ptCleatStart, ptOnPlane;
hr |= plShortening->get_PointOnPlane(&ptOnPlane);
hr |= MovePoint(ptOnPlane, vectLBeamDir, -100, ptCleatStart);
//Find the beam we thickness and offset the cleat outside it a bit
IProfTypePtr profBeam;
hr |= inputBeam->getProfType(&profBeam);
double dBeamWeb = 0.;
hr |= profBeam->getGeometricalData(kWeb, &dBeamWeb);
hr |= MovePoint(ptCleatStart, vectLBeamTranslationY, -dBeamWeb / 2, ptCleatStart);
IPoint3dPtr ptCleatEnd;
hr |= MovePoint(ptCleatStart, vectLBeamDir, 200, ptCleatEnd);
//Create a model role for the first cleat
IRolePtr spRole;
hr |= m_pJoint->CreateRole(CString(L"Angle_Cleat#1").AllocSysString(), &spRole);
ICS3dPtr csCleat;
hr |= csCleat.CreateInstance("DSCGeomCom.CS3d");
hr |= csCleat->setFrom(csBeamAtIntersectionPoint);
hr |= csCleat->RotateCSAroundY(M_PI / 2);
hr |= csCleat->RotateCSAroundX(M_PI);
//Finnaly, create the beam
IStraightBeamPtr firstCleat;
hr |= m_pJoint->CreateStraightBeam(m_sProfType, m_sProfSize, spRole, ptCleatStart, ptCleatEnd, csCleat, &firstCleat);
if (hr == S_OK)
{
hr |= firstCleat->put_refAxis(kLowerLeft);
hr |= createdObjects->Add(firstCleat);
//We will move the cleat cs to create the second cleat, therefore save it, for later when we create the bolts
ICS3dPtr csBolts;
hr |= csBolts.CreateInstance("DSCGeomCom.CS3d");
hr |= csBolts->setFrom(csCleat);
//Perform calculations for the second cleat
IPoint3dPtr ptBoltsOrig;
hr |= ptBoltsOrig.CreateInstance("DSCGeomCom.Point3d");
hr |= ptBoltsOrig->setFrom(ptCleatStart);
hr |= MovePoint(ptBoltsOrig, vectLBeamDir, 100, ptBoltsOrig);
hr |= csBolts->put_Origin(ptBoltsOrig);
hr |= MovePoint(ptCleatEnd, vectLBeamTranslationY, dBeamWeb, ptCleatEnd);
hr |= MovePoint(ptCleatStart, vectLBeamTranslationY, dBeamWeb, ptCleatStart);
ICS3dPtr csCleat2;
hr |= csCleat2.CreateInstance("DSCGeomCom.CS3d");
hr |= csCleat2->setFrom(csBeamAtIntersectionPoint);
hr |= csCleat2->RotateCSAroundZ(M_PI);
hr |= csCleat2->put_Origin(ptCleatStart);
//Create the cleat
IStraightBeamPtr secondCleat;
hr |= m_pJoint->CreateStraightBeam(m_sProfType, m_sProfSize, spRole, ptCleatEnd, ptCleatStart, csCleat, &secondCleat);
if (hr == S_OK)
{
//Now connect the L shaped beams with bolts on the main column and beam
hr |= secondCleat->put_refAxis(kLowerLeft);
hr |= createdObjects->Add(secondCleat);
hr |= CreateBoltPattern("Bolt#1", 100, 60, 3, 2, csBolts, firstCleat, secondCleat, inputColumn, createdObjects);
hr |= csBolts->RotateCSAroundX(M_PI / 2);
IPoint3dPtr ptCsBoltOrig, csOrig;
hr |= csBolts->get_Origin(&csOrig);
hr |= MovePoint(csOrig, vectLBeamTranslationX, -50, ptCsBoltOrig);
hr |= MovePoint(ptCsBoltOrig, vectLBeamTranslationY, 40, ptCsBoltOrig);
hr |= csBolts->put_Origin(ptCsBoltOrig);
hr |= CreateBoltPattern(L"Bolt#2", 50, 60, 3, 1, csBolts, firstCleat, secondCleat, inputBeam, createdObjects);
}
}
}
}
catch (_com_error& e)
{
hr = e.Error();
ruleCreateObjectsMethodStatus = hr;
}
catch (...)
{
hr = E_FAIL;
ruleCreateObjectsMethodStatus = hr;
}
}
VARIANT_BOOL finishedCorrectly = VARIANT_TRUE;
if (SUCCEEDED(ruleCreateObjectsMethodStatus))
finishedCorrectly = VARIANT_TRUE;
else
finishedCorrectly = VARIANT_FALSE;
hr = m_pJoint->put_CreationStatus(finishedCorrectly);
hr = m_pJoint->put_CreatedObjects(createdObjects);
return ruleCreateObjectsMethodStatus;
}
STDMETHODIMP SampleClipAngle::GetUserPages(IRulePageArray* pagesRet, IPropertySheetData* pPropSheetData)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
pPropSheetData->put_SheetPrompt(88270);
pPropSheetData->put_ResizeOption(kStandard);
IRulePagePtr page;
m_pJoint->CreateRulePage(&page);
page->put_title(88271);
m_page = new NativeClipAnglePage();
m_page->Create(IDD_CLIPANGLEDIALOG, NativeClipAnglePage::GetParentWindow());
m_page->setJoint(this);
page->put_hWnd((DWORD_PTR)m_page->GetSafeHwnd());
pagesRet->Add(page);
return S_OK;
}
//unload all pages
STDMETHODIMP SampleClipAngle::FreeUserPages()
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
if (m_page)
{
m_page->DestroyWindow();
delete m_page;
m_page = NULL;
}
return S_OK;
}
STDMETHODIMP SampleClipAngle::GetExportData(IRuleExportFiler* pExportFiler)
{
return S_OK;
}
STDMETHODIMP SampleClipAngle::GetFeatureName(BSTR* FeatureName, VARIANT_BOOL* hasFeature)
{
HRESULT hr = S_OK;
if (FeatureName == NULL || hasFeature == NULL)
return E_POINTER;
*hasFeature = VARIANT_FALSE;
return hr;
}
STDMETHODIMP SampleClipAngle::InvalidFeature(int reserved)
{
HRESULT hr = S_OK;
return hr;
}
STDMETHODIMP SampleClipAngle::ConvertFromHRL(IConvertFiler* filer, BSTR OldHRLRuleName, VARIANT_BOOL* Converted)
{
HRESULT hr = S_OK;
*Converted = VARIANT_FALSE;
return hr;
}
//Returns the beam cs at the given point
HRESULT
SampleClipAngle::GetBeamCSAtPoint(IBeamPtr spBeam, IPoint3dPtr spPoint, ICS3dPtr& spCS)
{
//TO DO - Add comments
//Get the beam cs at start
HRESULT hr = E_FAIL;
ICS3dPtr spStartCS;
hr = spBeam->getSysCSAt(kBeamStart, &spStartCS);
IMatrix3dPtr spAlignMatrix;
IPoint3dPtr spCSPoint;
hr = spBeam->getClosestPointToSystemline(spPoint, VARIANT_FALSE, &spCSPoint);
hr = spBeam->getCSAtPoint(spCSPoint, &spCS);
hr = spStartCS->SetToAlignCS(spCS, &spAlignMatrix);
hr = spCS->get_Origin(&spCSPoint);
IVector3dPtr spOffsetVector;
hr = spBeam->GetCurrentSys2Phys3dOffset(&spOffsetVector);
hr = spOffsetVector->TransformBy(spAlignMatrix);
hr = spCSPoint->Add(spOffsetVector);
hr = spCS->put_Origin(spCSPoint);
return hr;
}
HRESULT
SampleClipAngle::IntersectBeam(IStraightBeamPtr beam, IPoint3dPtr linePt, IVector3dPtr lineVect, IPoint3dArrayPtr &ptsInter)
{
//Create a line from the input point and vector
ILine3dPtr line;
HRESULT hr = S_OK;
hr |= line.CreateInstance("DSCGeomCom.Line3d");
hr |= line->CreateFromVectorAndPoint(linePt, lineVect);
//Get the body of the column
IAstModelerPtr bodyColumn;
hr |= beam->getAstModeler(kBodyUnNotched, &bodyColumn);
//Interect it with the line
hr |= bodyColumn->intersectWithLine(line, &ptsInter);
//Return the resulted intersection points
return hr;
}
HRESULT
SampleClipAngle::GetFacePlane(IStraightBeamPtr inputColumn, IStraightBeamPtr inputBeam, IPlanePtr &resPlane)
{
HRESULT hr = S_OK;
//Result plane
resPlane.CreateInstance("DSCGeomCom.Plane");
//Get the beam outer cs
eBeamEnd beamStart;
ICS3dPtr outerCS;
hr |= inputBeam->getCutOuterCS(VARIANT_TRUE, inputColumn, -1, &outerCS, &beamStart, VARIANT_TRUE);
//Change the z vector direction
IVector3dPtr outerVectZ;
hr |= outerCS->get_ZAxis(&outerVectZ);
hr |= outerVectZ->Multiply(-1);
IPoint3dPtr outerCSOrigin;
hr |= outerCS->get_Origin(&outerCSOrigin);
//Get the column cs at the outer cs origin
ICS3dPtr mainCSAtPoint;
hr |= GetBeamCSAtPoint(inputColumn, outerCSOrigin, mainCSAtPoint);
//Compute tranformation matrix
IPoint3dPtr axisPoint;
hr |= mainCSAtPoint->get_Origin(&axisPoint);
ICS3dPtr midCS;
hr |= inputColumn->get_PhysicalCSMid(&midCS);
IMatrix3dPtr alignMatrix;
hr |= mainCSAtPoint->SetToAlignCS(midCS, &alignMatrix);
//Transform the points which will constitute the line which we want to intersect with the beam
hr |= axisPoint->TransformBy(alignMatrix);
hr |= outerVectZ->TransformBy(alignMatrix);
//Get the intersection points
IPoint3dArrayPtr intersectionPts;
hr |= IntersectBeam(inputColumn, axisPoint, outerVectZ, intersectionPts);
//If we have intersection points, create a plane at the first intersection point
VARIANT count;
hr |= intersectionPts->get_Count(&count);
if (count.intVal != 0)
{
IPoint3dPtr tempPt;
hr |= intersectionPts->get_Item(CComVariant(0), &tempPt);
hr |= axisPoint->setFrom(tempPt);
hr |= midCS->SetToAlignCS(mainCSAtPoint, &alignMatrix);
hr |= axisPoint->TransformBy(alignMatrix);
hr |= outerVectZ->TransformBy(alignMatrix);
hr |= resPlane->CreateFromPointAndNormal(axisPoint, outerVectZ);
}
VariantClear(&count);
return hr;
}
HRESULT
SampleClipAngle::MovePoint(IPoint3dPtr ptIn, IVector3dPtr vMove, double moveDist, IPoint3dPtr& retPoint)
{
HRESULT hr = S_OK;
hr |= retPoint.CreateInstance("DSCGeomCom.Point3d");
hr |= retPoint->setFrom(ptIn);
IVector3dPtr vect1;
hr |= vect1.CreateInstance("DSCGeomCom.Vector3d");
hr |= vect1->setFrom(vMove);
hr |= vect1->Normalize();
hr |= vect1->Multiply(moveDist);
hr |= retPoint->Add(vect1);
return hr;
}
HRESULT
SampleClipAngle::CreateBoltPattern(CString boltRole, double dBoltWidth, double dBoltHeight, int nXBolts, int nYBolts, ICS3dPtr csBolts, IBeamPtr cleat1, IBeamPtr cleat2, IBeamPtr beam, IAstObjectsArrPtr& createdObjectsArr)
{
HRESULT hr = S_OK;
//CProfileUtils pu;
IRolePtr role;
hr |= m_pJoint->CreateRole(boltRole.AllocSysString(), &role); //role object
IBoltPtr bolt;
hr |= m_pJoint->CreateBoltFinitRect(role, m_sBoltsMaterial, m_sBoltsStandard, 0, 0, dBoltHeight, dBoltWidth, nXBolts, nYBolts, m_dBoltsDiameter, csBolts, &bolt);
if (hr == S_OK)
{
IAstObjectsArrPtr conObj;
hr |= m_pJoint->CreateObjectsArray(&conObj);
hr |= conObj->Add(cleat1);
hr |= conObj->Add(cleat2);
hr |= conObj->Add(beam);
hr |= bolt->Connect(conObj, kOnSite);
hr |= createdObjectsArr->Add(bolt);
}
return hr;
}
STDMETHODIMP SampleClipAngle::BoldParameters(SAFEARRAY** pArrParams)
{
HRESULT hr = S_OK;
return hr;
}
@@ -0,0 +1,67 @@
#pragma once
class SampleClipAngle :
public IDispatchImpl<ISampleClipAngle, &IID_ISampleClipAngle, &LIBID_SampleClipJointLib>,
public ISupportErrorInfo,
public CComObjectRoot,
public CComCoClass<SampleClipAngle, &CLSID_SampleClipAngle>,
public IDispatchImpl<IRule, &IID_IRule, &LIBID_AstSTEELAUTOMATIONLib, MAJVER_AstSTEELAUTOMATIONLib>,
public IDispatchImpl<IRuleExtension, &IID_IRuleExtension, &LIBID_AstSTEELAUTOMATIONLib, MAJVER_AstSTEELAUTOMATIONLib>
{
private:
IJoint* m_pJoint;
HRESULT MovePoint(IPoint3dPtr ptIn, IVector3dPtr vMove, double moveDist, IPoint3dPtr& retPoint);
HRESULT CreateBoltPattern(CString boltRole, double dBoltWidth, double dBoltHeight, int nXBolts, int nYBolts, ICS3dPtr csBolts, IBeamPtr cleat1, IBeamPtr cleat2, IBeamPtr beam, IAstObjectsArrPtr& createdObjectsArr);
HRESULT IntersectBeam(IStraightBeamPtr beam, IPoint3dPtr linePt, IVector3dPtr lineVect, IPoint3dArrayPtr &ptsIntersection);
HRESULT GetBeamCSAtPoint(IBeamPtr spBeam, IPoint3dPtr spPoint, ICS3dPtr& spCS);
HRESULT GetFacePlane(IStraightBeamPtr inputColumn, IStraightBeamPtr inputBeam, IPlanePtr &resPlane);
void SplitBeamsInternalName(BSTR fullInternal, BSTR& classInternal, BSTR& sectionInternal);
public:
BEGIN_COM_MAP(SampleClipAngle)
//DEL COM_INTERFACE_ENTRY(IDispatch)
COM_INTERFACE_ENTRY(ISampleClipAngle)
COM_INTERFACE_ENTRY(ISupportErrorInfo)
COM_INTERFACE_ENTRY2(IDispatch, ISampleClipAngle)
COM_INTERFACE_ENTRY(IRule)
COM_INTERFACE_ENTRY(IRuleExtension)
END_COM_MAP()
//DECLARE_NOT_AGGREGATABLE(CUSClipAngle)
// Remove the comment from the line above if you don't want your object to
// support aggregation.
DECLARE_REGISTRY_RESOURCEID(IDR_SampleClipAngle)
// ISupportsErrorInfo
STDMETHOD(InterfaceSupportsErrorInfo)(REFIID riid);
// IRule
STDMETHOD(get_Joint)(IJoint** pVal);
STDMETHOD(put_Joint)(IJoint* pVal);
STDMETHOD(Query)(IAstUI* pAstUI);
STDMETHOD(InField)(IFiler* pFiler);
STDMETHOD(OutField)(IFiler* pFiler);
STDMETHOD(GetTableName)(BSTR* pStrTableName);
STDMETHOD(CreateObjects)();
STDMETHOD(GetUserPages)(IRulePageArray* pagesRet, IPropertySheetData* pPropSheetData);
STDMETHOD(FreeUserPages)();
STDMETHOD(GetExportData)(IRuleExportFiler* pExportFiler);
STDMETHOD(GetFeatureName)(BSTR* FeatureName, VARIANT_BOOL* hasFeature);
STDMETHOD(InvalidFeature)(INT reserved);
STDMETHOD(ConvertFromHRL)(IConvertFiler* filer, BSTR OldHRLRuleName, VARIANT_BOOL* Converted);
STDMETHOD(BoldParameters)(SAFEARRAY**);
class NativeClipAnglePage* m_page;
BSTR m_sProfType;
BSTR m_sProfSize;
BSTR m_sBoltsStandard;
BSTR m_sBoltsMaterial;
BSTR m_sBoltsSet;
double m_dBoltsDiameter;
};
@@ -0,0 +1,23 @@
HKCR
{
SampleClipAngleNative.SampleClipAngle.1 = s 'SampleClipAngle Class'
{
CLSID = s '{FD62E6AB-0412-4F2B-9DB8-C5D5385F8042}'
}
SampleClipAngleNative.SampleClipAngle = s 'SampleClipAngle Class'
{
CLSID = s '{FD62E6AB-0412-4F2B-9DB8-C5D5385F8042}'
}
NoRemove CLSID
{
ForceRemove {FD62E6AB-0412-4F2B-9DB8-C5D5385F8042} = s 'SampleClipAngle Class'
{
ProgID = s 'SampleClipAngleNative.SampleClipAngle.1'
VersionIndependentProgID = s 'SampleClipAngleNative.SampleClipAngle'
InprocServer32 = s '%MODULE%'
{
val ThreadingModel = s 'Apartment'
}
}
}
}
@@ -0,0 +1,88 @@
#include "pch.h"
#include <initguid.h>
#include "SampleClipAngleNative_i.c"
CComModule _Module;
BEGIN_OBJECT_MAP(ObjectMap)
OBJECT_ENTRY(CLSID_SampleClipAngle, SampleClipAngle)
END_OBJECT_MAP()
class SampleClipAngleApp : public CWinApp
{
public:
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CAstJointsAS61App)
public:
virtual BOOL InitInstance();
virtual int ExitInstance();
//}}AFX_VIRTUAL
//{{AFX_MSG(CAstJointsAS61App)
// NOTE - the ClassWizard will add and remove member functions here.
// DO NOT EDIT what you see in these blocks of generated code !
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
BEGIN_MESSAGE_MAP(SampleClipAngleApp, CWinApp)
//{{AFX_MSG_MAP(CAstJointsAS61App)
// NOTE - the ClassWizard will add and remove mapping macros here.
// DO NOT EDIT what you see in these blocks of generated code!
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
SampleClipAngleApp theApp;
BOOL SampleClipAngleApp::InitInstance()
{
AfxEnableControlContainer();
_Module.Init(ObjectMap, m_hInstance, &LIBID_SampleClipJointLib);
return CWinApp::InitInstance();
}
int SampleClipAngleApp::ExitInstance()
{
_Module.Term();
return CWinApp::ExitInstance();
}
/////////////////////////////////////////////////////////////////////////////
// Used to determine whether the DLL can be unloaded by OLE
STDAPI DllCanUnloadNow(void)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
return (AfxDllCanUnloadNow() == S_OK && _Module.GetLockCount() == 0) ? S_OK : S_FALSE;
}
/////////////////////////////////////////////////////////////////////////////
// Returns a class factory to create an object of the requested type
STDAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID* ppv)
{
return _Module.GetClassObject(rclsid, riid, ppv);
}
/////////////////////////////////////////////////////////////////////////////
// DllRegisterServer - Adds entries to the system registry
STDAPI DllRegisterServer(void)
{
// registers object, typelib and all interfaces in typelib
return _Module.RegisterServer(TRUE);
}
/////////////////////////////////////////////////////////////////////////////
// DllUnregisterServer - Removes entries from the system registry
STDAPI DllUnregisterServer(void)
{
return _Module.UnregisterServer(TRUE);
}
@@ -0,0 +1,200 @@
// NativeClipAnglePage.cpp : implementation file
//
#include "pch.h"
#include "afxdialogex.h"
#include "NativeClipAnglePage.h"
// NativeClipAnglePage dialog
CWnd* NativeClipAnglePage::m_pWnd = NULL;
IMPLEMENT_DYNAMIC(NativeClipAnglePage, CDialog)
NativeClipAnglePage::NativeClipAnglePage(CWnd* pParent /*=nullptr*/)
: CDialog(IDD_CLIPANGLEDIALOG, pParent)
{
m_pCurRule = nullptr;
m_bIsInitialising = true;
}
NativeClipAnglePage::~NativeClipAnglePage()
{
if (m_pCurRule)
{
m_pCurRule->Release();
m_pCurRule = NULL;
}
}
void
NativeClipAnglePage::setJoint(SampleClipAngle* pVal)
{
if (m_pCurRule)
{
m_pCurRule->Release();
m_pCurRule = NULL;
}
m_pCurRule = pVal;
m_pCurRule->AddRef();
//angle
_bstr_t tmpClass(m_pCurRule->m_sProfType, TRUE); //avoid memory leaks
_bstr_t tmpName(m_pCurRule->m_sProfSize, TRUE); //avoid memory leaks
m_Profile.SetCurrentProfileName(CString("AISC 15.0 Angle equal#@§@#L4X4X3/8").AllocSysString());
m_Profile.SetUseFilterClass(TRUE);
m_Profile.SetShowHideAllSections(TRUE);
m_Profile.AppendAcceptedClassGroup(CString("W").AllocSysString());
m_Profile.SetCurrentClass((LPCTSTR)tmpClass);
m_Profile.SetCurrentSection((LPCTSTR)tmpName);
_bstr_t boltsStd(m_pCurRule->m_sBoltsStandard, true);
_bstr_t boltsMat(m_pCurRule->m_sBoltsMaterial, true);
_bstr_t boltSet(m_pCurRule->m_sBoltsSet, true);
m_Bolts.SetBoltStandard((LPCTSTR)boltsStd);
m_Bolts.SetBoltMaterial((LPCTSTR)boltsMat);
m_Bolts.SetBoltSet((LPCTSTR)boltSet);
m_Bolts.SetBoltDiameter(m_pCurRule->m_dBoltsDiameter);
UpdateData(FALSE);
m_bIsInitialising = false;
}
void NativeClipAnglePage::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Control(pDX, IDC_ASTPROFILECONTROL1, m_Profile);
DDX_Control(pDX, IDC_BOLTSTANDARDSCTRL1, m_Bolts);
}
CWnd*
NativeClipAnglePage::GetParentWindow()
{
if (m_pWnd == nullptr)
{
// Restore the module state from the main executable, in order to access the main hwnd
AFX_MODULE_STATE* appModuleState = AfxGetAppModuleState();
// Get the current module state
AFX_MODULE_STATE* currModuleState = AfxGetModuleState();
// Switch the module state
AfxSetModuleState(appModuleState);
m_pWnd = AfxGetMainWnd();
if (m_pWnd == nullptr)
{
try
{
CWinApp* pApp = AfxGetApp();
if (pApp)
{
m_pWnd = pApp->GetMainWnd();
if (m_pWnd == nullptr)
{
m_pWnd = (CFrameWnd*)pApp->m_pMainWnd;
}
}
}
catch (...)
{
}
}
// Switch back the module state
AfxSetModuleState(currModuleState);
}
return m_pWnd;
}
void
NativeClipAnglePage::OnProfileChanged()
{
// TODO: Add your control notification handler code here
if (!m_bIsInitialising && m_pCurRule)
{
UpdateData(TRUE);
IJointPtr curJoint;
m_pCurRule->get_Joint(&curJoint);
if (m_Profile.GetEnabled() == FALSE)
{
return;
}
_bstr_t tempClassJoint(m_pCurRule->m_sProfType, TRUE);
_bstr_t tempNameJoint(m_pCurRule->m_sProfSize, TRUE);
_bstr_t tempClassDialog(m_Profile.GetCurrentClass().AllocSysString(), TRUE);
_bstr_t tempNameDialog(m_Profile.GetCurrentSection().AllocSysString(), TRUE);
if (tempClassJoint != tempClassDialog ||
tempNameJoint != tempNameDialog)
{
CString currentClass = m_Profile.GetCurrentClass();
CString currentSection = m_Profile.GetCurrentSection();
m_pCurRule->m_sProfType = currentClass.AllocSysString();
m_pCurRule->m_sProfSize = currentSection.AllocSysString();
//setGrayedVals();
curJoint->SaveData(m_pCurRule);
curJoint->UpdateDrivenConstruction();
}
}
}
void
NativeClipAnglePage::OnBoltsChanged()
{
if (!m_bIsInitialising && m_pCurRule)
{
UpdateData(TRUE);
IJointPtr curJoint;
m_pCurRule->get_Joint(&curJoint);
bool bRet = false;
double tempValueDiameter = m_Bolts.GetBoltDiameter();
_bstr_t tempValueGrade((m_Bolts.GetBoltMaterial()).AllocSysString(), TRUE);
_bstr_t tempValueAssembly((m_Bolts.GetBoltSet()).AllocSysString(), TRUE);
_bstr_t tempValueType((m_Bolts.GetBoltStandard()).AllocSysString(), TRUE);
_bstr_t jointGrade(m_pCurRule->m_sBoltsMaterial, TRUE);
_bstr_t jointAssembly(m_pCurRule->m_sBoltsSet, TRUE);
_bstr_t jointType(m_pCurRule->m_sBoltsStandard, TRUE);
if ((tempValueDiameter != m_pCurRule->m_dBoltsDiameter) ||
(tempValueGrade != jointGrade) ||
(tempValueAssembly != jointAssembly) ||
(tempValueType != jointType))
{
m_pCurRule->m_dBoltsDiameter = tempValueDiameter;
m_pCurRule->m_sBoltsMaterial = CString(tempValueGrade.GetBSTR()).AllocSysString();
m_pCurRule->m_sBoltsSet = CString(tempValueAssembly.GetBSTR()).AllocSysString();
m_pCurRule->m_sBoltsStandard = CString(tempValueType.GetBSTR()).AllocSysString();
curJoint->SaveData(m_pCurRule);
curJoint->UpdateDrivenConstruction();
}
}
}
BEGIN_MESSAGE_MAP(NativeClipAnglePage, CDialog)
END_MESSAGE_MAP()
// NativeClipAnglePage message handlers
BEGIN_EVENTSINK_MAP(NativeClipAnglePage, CDialog)
//{{AFX_EVENTSINK_MAP(CUSClipAngle_Page1)
ON_EVENT(NativeClipAnglePage, IDC_ASTPROFILECONTROL1, 20 /* ProfileChanged */, OnProfileChanged, VTS_NONE)
ON_EVENT(NativeClipAnglePage, IDC_BOLTSTANDARDSCTRL1, 5 /* ProfileChanged */, OnBoltsChanged, VTS_NONE)
END_EVENTSINK_MAP()
@@ -0,0 +1,39 @@
#pragma once
#include "afxdialogex.h"
#include "astprofilecontrol.h"
#include "boltstandards.h"
// NativeClipAnglePage dialog
class NativeClipAnglePage : public CDialog
{
DECLARE_DYNAMIC(NativeClipAnglePage)
private:
SampleClipAngle* m_pCurRule;
static CWnd* m_pWnd;
CAstProfileControl m_Profile;
CBoltStandards m_Bolts;
bool m_bIsInitialising;
public:
NativeClipAnglePage(CWnd* pParent = nullptr); // standard constructor
virtual ~NativeClipAnglePage();
void setJoint(SampleClipAngle* pVal);
static CWnd* GetParentWindow();
// Dialog Data
//#ifdef AFX_DESIGN_TIME
enum { IDD = IDD_CLIPANGLEDIALOG};
//#endif
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
afx_msg void OnProfileChanged();
afx_msg void OnBoltsChanged();
DECLARE_EVENTSINK_MAP()
DECLARE_MESSAGE_MAP()
};
@@ -0,0 +1,6 @@
; SampleClipAngle.def : Declares the module parameters.
EXPORTS
DllCanUnloadNow PRIVATE
DllGetClassObject PRIVATE
DllRegisterServer PRIVATE
DllUnregisterServer PRIVATE
@@ -0,0 +1,145 @@
// Microsoft Visual C++ generated resource script.
//
#include "resource.h"
#define APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 2 resource.
//
#include "winres.h"
/////////////////////////////////////////////////////////////////////////////
#undef APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
// English (United States) resources
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
#pragma code_page(1252)
#ifdef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// TEXTINCLUDE
//
1 TEXTINCLUDE
BEGIN
"resource.h\0"
END
2 TEXTINCLUDE
BEGIN
"#include ""winres.h""\r\n"
"\0"
END
3 TEXTINCLUDE
BEGIN
"1 TYPELIB ""SampleClipAngleNative.tlb""\r\n"
"\0"
END
#endif // APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Dialog
//
IDD_CLIPANGLEDIALOG DIALOGEX 0, 0, 528, 219
STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD
FONT 8, "MS Shell Dlg", 400, 0, 0x0
BEGIN
CONTROL "",IDC_BOLTSTANDARDSCTRL1,
"{0C4B9CAC-B571-4906-B006-06FC98473734}",WS_TABSTOP,59,32,148,60
CONTROL "",IDC_ASTPROFILECONTROL1,
"{574D51EF-85F9-415C-81CE-5A0FC45B1F79}",WS_TABSTOP,59,10,149,14
LTEXT "Cleat profile",IDC_STATIC,12,10,47,8
LTEXT "Bolt Diameter",IDC_STATIC,12,32,47,8
LTEXT "Bolt Type",IDC_STATIC,12,47,47,8
LTEXT "Bolt Grade",IDC_STATIC,12,62,47,8
LTEXT "Bolt Assembly",IDC_STATIC,12,77,47,8
CONTROL "",IDC_ASTBITMAPCONTROL1,
"{916DA9C4-75E2-46C6-A41F-E1522ECCF871}",WS_TABSTOP,212,10,92,65
END
/////////////////////////////////////////////////////////////////////////////
//
// DESIGNINFO
//
#ifdef APSTUDIO_INVOKED
GUIDELINES DESIGNINFO
BEGIN
IDD_CLIPANGLEDIALOG, DIALOG
BEGIN
LEFTMARGIN, 6
RIGHTMARGIN, 521
TOPMARGIN, 7
BOTTOMMARGIN, 212
END
END
#endif // APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Dialog Info
//
IDD_CLIPANGLEDIALOG DLGINIT
BEGIN
IDC_BOLTSTANDARDSCTRL1, 0x376, 64, 0
0x0000, 0x0000, 0x0003, 0x0001, 0x16f2, 0x0000, 0x0a21, 0x0000, 0x0044,
0x0000, 0x01ff, 0x0000, 0x0000, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xfeff,
0x00ff, 0xfeff, 0x00ff, 0xfeff, 0x00ff,
IDC_ASTPROFILECONTROL1, 0x376, 191, 0
0x0000, 0x0000, 0x0003, 0x0001, 0x1727, 0x0000, 0x0261, 0x0000, 0x0044,
0x0000, 0x01ff, 0xff00, 0xfffe, 0x4122, 0x4900, 0x5300, 0x4300, 0x2000,
0x3100, 0x3500, 0x2e00, 0x3000, 0x2000, 0x4100, 0x6e00, 0x6700, 0x6c00,
0x6500, 0x2000, 0x6500, 0x7100, 0x7500, 0x6100, 0x6c00, 0x2300, 0x4000,
0xa700, 0x4000, 0x2300, 0x4c00, 0x3400, 0x5800, 0x3400, 0x5800, 0x3300,
0x2f00, 0x3800, 0xff00, 0xfffe, 0x4115, 0x4900, 0x5300, 0x4300, 0x2000,
0x3100, 0x3500, 0x2e00, 0x3000, 0x2000, 0x4100, 0x6e00, 0x6700, 0x6c00,
0x6500, 0x2000, 0x6500, 0x7100, 0x7500, 0x6100, 0x6c00, 0xff00, 0xfffe,
0x4c08, 0x3400, 0x5800, 0x3400, 0x5800, 0x3300, 0x2f00, 0x3800, 0x0000,
0x0065, 0x0000, 0x0066, 0x0000, 0x0068, 0x0000, 0xff00, 0xffff, 0x00ff,
0x1e00, 0x0000, 0x0000, 0x0000, 0x0000, "\000"
IDC_ASTBITMAPCONTROL1, 0x376, 25, 0
0x0000, 0x0000, 0x0003, 0x0001, 0x0e43, 0x0000, 0x0af5, 0x0000, 0x0040,
0x0000, 0x5701, 0x00eb, "\000"
0
END
/////////////////////////////////////////////////////////////////////////////
//
// AFX_DIALOG_LAYOUT
//
IDD_CLIPANGLEDIALOG AFX_DIALOG_LAYOUT
BEGIN
0
END
#endif // English (United States) resources
/////////////////////////////////////////////////////////////////////////////
#ifndef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 3 resource.
//
1 TYPELIB "SampleClipAngleNative.tlb"
/////////////////////////////////////////////////////////////////////////////
#endif // not APSTUDIO_INVOKED
@@ -0,0 +1,31 @@
import "oaidl.idl";
import "ocidl.idl";
[
object,
uuid(4F30D30D-2821-4933-AFC3-64AB5CCA2AE2),
dual,
helpstring("ISampleClipAngle Interface"),
pointer_default(unique)
]
interface ISampleClipAngle : IDispatch
{
};
[
uuid(10B7FC2F-C086-4F40-8ECA-5109479299A0),
version(1.0),
helpstring("SampleClipAngle 1.0 Type Library")
]
library SampleClipJointLib
{
importlib("stdole32.tlb");
importlib("stdole2.tlb");
[
uuid(FD62E6AB-0412-4F2B-9DB8-C5D5385F8042),
helpstring("USClipAngle Class")
]
coclass SampleClipAngle
{
[default] interface ISampleClipAngle;
};
};
@@ -0,0 +1,259 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="..\StructuralConnectionsSDKSamples.Common.props" />
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<VCProjectVersion>16.0</VCProjectVersion>
<Keyword>Win32Proj</Keyword>
<ProjectGuid>{42debbf6-6fa4-4fec-97a4-c6a0c994a4fc}</ProjectGuid>
<RootNamespace>SampleClipAngleC</RootNamespace>
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
<ProjectName>SampleClipAngleNative</ProjectName>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v143</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
<UseOfMfc>Dynamic</UseOfMfc>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v143</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v143</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v143</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Label="Shared">
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<LinkIncremental>true</LinkIncremental>
<OutDir>..\..\Binaries\</OutDir>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<LinkIncremental>false</LinkIncremental>
<OutDir>..\..\Binaries\</OutDir>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<LinkIncremental>true</LinkIncremental>
<OutDir>..\..\Binaries\</OutDir>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<LinkIncremental>false</LinkIncremental>
<OutDir>..\..\Binaries\</OutDir>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>WIN32;_DEBUG;SAMPLECLIPANGLEC_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
<PrecompiledHeader>Use</PrecompiledHeader>
<AdditionalIncludeDirectories>$(ASInstallDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<EnableUAC>false</EnableUAC>
<ModuleDefinitionFile>SampleClipAngle.def</ModuleDefinitionFile>
</Link>
<Midl>
<HeaderFileName>$(ProjectName)_h.h</HeaderFileName>
<InterfaceIdentifierFileName>$(ProjectName)_i.c</InterfaceIdentifierFileName>
<ProxyFileName>$(ProjectName)_p.c</ProxyFileName>
<TypeLibraryName>$(ProjectName).tlb</TypeLibraryName>
</Midl>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>WIN32;NDEBUG;SAMPLECLIPANGLEC_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
<PrecompiledHeader>Use</PrecompiledHeader>
<AdditionalIncludeDirectories>$(ASInstallDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<GenerateDebugInformation>true</GenerateDebugInformation>
<EnableUAC>false</EnableUAC>
<ModuleDefinitionFile>SampleClipAngle.def</ModuleDefinitionFile>
</Link>
<Midl>
<HeaderFileName>$(ProjectName)_h.h</HeaderFileName>
<InterfaceIdentifierFileName>$(ProjectName)_i.c</InterfaceIdentifierFileName>
<ProxyFileName>$(ProjectName)_p.c</ProxyFileName>
<TypeLibraryName>$(ProjectName).tlb</TypeLibraryName>
</Midl>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>_DEBUG;SAMPLECLIPANGLEC_EXPORTS;_WINDOWS;_USRDLL;_AFXDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
<PrecompiledHeader>Use</PrecompiledHeader>
<AdditionalIncludeDirectories>$(ASInstallDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<EnableUAC>false</EnableUAC>
<ModuleDefinitionFile>SampleClipAngle.def</ModuleDefinitionFile>
</Link>
<Midl>
<OutputDirectory>
</OutputDirectory>
</Midl>
<Midl>
<HeaderFileName>$(ProjectName)_h.h</HeaderFileName>
</Midl>
<Midl>
<InterfaceIdentifierFileName>$(ProjectName)_i.c</InterfaceIdentifierFileName>
</Midl>
<Midl>
<ProxyFileName>$(ProjectName)_p.c</ProxyFileName>
<TypeLibraryName>$(ProjectName).tlb</TypeLibraryName>
</Midl>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>NDEBUG;SAMPLECLIPANGLEC_EXPORTS;_WINDOWS;_USRDLL;_AFXDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
<PrecompiledHeader>Use</PrecompiledHeader>
<AdditionalIncludeDirectories>$(ASInstallDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<GenerateDebugInformation>true</GenerateDebugInformation>
<EnableUAC>false</EnableUAC>
<ModuleDefinitionFile>SampleClipAngle.def</ModuleDefinitionFile>
</Link>
<Midl>
<HeaderFileName>$(ProjectName)_h.h</HeaderFileName>
<InterfaceIdentifierFileName>$(ProjectName)_i.c</InterfaceIdentifierFileName>
<ProxyFileName>$(ProjectName)_p.c</ProxyFileName>
<TypeLibraryName>$(ProjectName).tlb</TypeLibraryName>
</Midl>
</ItemDefinitionGroup>
<ItemGroup>
<ClInclude Include="astbitmapcontrol.h" />
<ClInclude Include="astcheckboxcontrol.h" />
<ClInclude Include="astcombotablecontrol.h" />
<ClInclude Include="astgratingcontrol.h" />
<ClInclude Include="astmodelrolecontrol.h" />
<ClInclude Include="astocxgrid.h" />
<ClInclude Include="astprofilecontrol.h" />
<ClInclude Include="aststaticprompt.h" />
<ClInclude Include="aststatictextcontrol.h" />
<ClInclude Include="astunitcontrol.h" />
<ClInclude Include="astweldcontrol.h" />
<ClInclude Include="boltstandards.h" />
<ClInclude Include="ClipAngle.h" />
<ClInclude Include="font.h" />
<ClInclude Include="framework.h" />
<ClInclude Include="NativeClipAnglePage.h" />
<ClInclude Include="pch.h" />
<ClInclude Include="resource.h" />
<ClInclude Include="unitsmanager.h" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="astbitmapcontrol.cpp" />
<ClCompile Include="astcheckboxcontrol.cpp" />
<ClCompile Include="astcombotablecontrol.cpp" />
<ClCompile Include="astgratingcontrol.cpp" />
<ClCompile Include="astmodelrolecontrol.cpp" />
<ClCompile Include="astocxgrid.cpp" />
<ClCompile Include="astprofilecontrol.cpp" />
<ClCompile Include="aststaticprompt.cpp" />
<ClCompile Include="aststatictextcontrol.cpp" />
<ClCompile Include="astunitcontrol.cpp" />
<ClCompile Include="astweldcontrol.cpp" />
<ClCompile Include="boltstandards.cpp" />
<ClCompile Include="ClipAngle.cpp" />
<ClCompile Include="ClipAngleApp.cpp" />
<ClCompile Include="font.cpp" />
<ClCompile Include="NativeClipAnglePage.cpp" />
<ClCompile Include="pch.cpp">
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Create</PrecompiledHeader>
</ClCompile>
<ClCompile Include="unitsmanager.cpp" />
</ItemGroup>
<ItemGroup>
<Midl Include="SampleClipAngleNative.idl" />
</ItemGroup>
<ItemGroup>
<None Include="ClipAngle.rgs" />
<None Include="SampleClipAngle.def" />
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="SampleClipAngle.rc" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>
@@ -0,0 +1,150 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Source Files">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
<Filter Include="Header Files">
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
<Extensions>h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd</Extensions>
</Filter>
<Filter Include="Resource Files">
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
</Filter>
</ItemGroup>
<ItemGroup>
<ClInclude Include="framework.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="pch.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="ClipAngle.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="resource.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="NativeClipAnglePage.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="astprofilecontrol.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="boltstandards.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="unitsmanager.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="astweldcontrol.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="astunitcontrol.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="aststatictextcontrol.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="aststaticprompt.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="astbitmapcontrol.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="astcheckboxcontrol.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="astcombotablecontrol.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="astgratingcontrol.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="astocxgrid.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="astmodelrolecontrol.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="font.h">
<Filter>Header Files</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ClCompile Include="pch.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="ClipAngle.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="ClipAngleApp.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="NativeClipAnglePage.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="astprofilecontrol.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="boltstandards.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="astcombotablecontrol.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="unitsmanager.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="astweldcontrol.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="astunitcontrol.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="aststatictextcontrol.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="aststaticprompt.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="astmodelrolecontrol.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="astocxgrid.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="astgratingcontrol.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="astbitmapcontrol.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="astcheckboxcontrol.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="font.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<Midl Include="SampleClipAngleNative.idl">
<Filter>Source Files</Filter>
</Midl>
</ItemGroup>
<ItemGroup>
<None Include="ClipAngle.rgs">
<Filter>Resource Files</Filter>
</None>
<None Include="SampleClipAngle.def">
<Filter>Source Files</Filter>
</None>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="SampleClipAngle.rc">
<Filter>Resource Files</Filter>
</ResourceCompile>
</ItemGroup>
</Project>
@@ -0,0 +1,41 @@
// Machine generated IDispatch wrapper class(es) created by Microsoft Visual C++
// NOTE: Do not modify the contents of this file. If this class is regenerated by
// Microsoft Visual C++, your modifications will be overwritten.
#include "pch.h"
#include "astbitmapcontrol.h"
/////////////////////////////////////////////////////////////////////////////
// CAstBitmapControl
IMPLEMENT_DYNCREATE(CAstBitmapControl, CWnd)
/////////////////////////////////////////////////////////////////////////////
// CAstBitmapControl properties
long CAstBitmapControl::GetKey()
{
long result;
GetProperty(0x1, VT_I4, (void*)&result);
return result;
}
void CAstBitmapControl::SetKey(long propVal)
{
SetProperty(0x1, VT_I4, propVal);
}
BOOL CAstBitmapControl::GetEnabled()
{
BOOL result;
GetProperty(DISPID_ENABLED, VT_BOOL, (void*)&result);
return result;
}
void CAstBitmapControl::SetEnabled(BOOL propVal)
{
SetProperty(DISPID_ENABLED, VT_BOOL, propVal);
}
/////////////////////////////////////////////////////////////////////////////
// CAstBitmapControl operations
@@ -0,0 +1,53 @@
#if !defined(AFX_ASTBITMAPCONTROL_H__E09120E3_6AA7_4764_8EC4_A794AAE392AE__INCLUDED_)
#define AFX_ASTBITMAPCONTROL_H__E09120E3_6AA7_4764_8EC4_A794AAE392AE__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// Machine generated IDispatch wrapper class(es) created by Microsoft Visual C++
// NOTE: Do not modify the contents of this file. If this class is regenerated by
// Microsoft Visual C++, your modifications will be overwritten.
/////////////////////////////////////////////////////////////////////////////
// CAstBitmapControl wrapper class
class CAstBitmapControl : public CWnd
{
protected:
DECLARE_DYNCREATE(CAstBitmapControl)
public:
CLSID const& GetClsid()
{
static CLSID const clsid
= { 0x916da9c4, 0x75e2, 0x46c6, { 0xa4, 0x1f, 0xe1, 0x52, 0x2e, 0xcc, 0xf8, 0x71 } };
return clsid;
}
virtual BOOL Create(LPCTSTR lpszClassName,
LPCTSTR lpszWindowName, DWORD dwStyle,
const RECT& rect,
CWnd* pParentWnd, UINT nID,
CCreateContext* pContext = NULL)
{ return CreateControl(GetClsid(), lpszWindowName, dwStyle, rect, pParentWnd, nID); }
BOOL Create(LPCTSTR lpszWindowName, DWORD dwStyle,
const RECT& rect, CWnd* pParentWnd, UINT nID,
CFile* pPersist = NULL, BOOL bStorage = FALSE,
BSTR bstrLicKey = NULL)
{ return CreateControl(GetClsid(), lpszWindowName, dwStyle, rect, pParentWnd, nID,
pPersist, bStorage, bstrLicKey); }
// Attributes
public:
long GetKey();
void SetKey(long);
BOOL GetEnabled();
void SetEnabled(BOOL);
// Operations
public:
};
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_ASTBITMAPCONTROL_H__E09120E3_6AA7_4764_8EC4_A794AAE392AE__INCLUDED_)
@@ -0,0 +1,55 @@
// Machine generated IDispatch wrapper class(es) created by Microsoft Visual C++
// NOTE: Do not modify the contents of this file. If this class is regenerated by
// Microsoft Visual C++, your modifications will be overwritten.
#include "pch.h"
#include "astcheckboxcontrol.h"
/////////////////////////////////////////////////////////////////////////////
// CAstCheckBoxControl
IMPLEMENT_DYNCREATE(CAstCheckBoxControl, CWnd)
/////////////////////////////////////////////////////////////////////////////
// CAstCheckBoxControl properties
long CAstCheckBoxControl::GetCaptionKey()
{
long result;
GetProperty(0x1, VT_I4, (void*)&result);
return result;
}
void CAstCheckBoxControl::SetCaptionKey(long propVal)
{
SetProperty(0x1, VT_I4, propVal);
}
BOOL CAstCheckBoxControl::GetValue()
{
BOOL result;
GetProperty(0x2, VT_BOOL, (void*)&result);
return result;
}
void CAstCheckBoxControl::SetValue(BOOL propVal)
{
SetProperty(0x2, VT_BOOL, propVal);
}
BOOL CAstCheckBoxControl::GetEnabled()
{
BOOL result;
GetProperty(DISPID_ENABLED, VT_BOOL, (void*)&result);
return result;
}
void CAstCheckBoxControl::SetEnabled(BOOL propVal)
{
SetProperty(DISPID_ENABLED, VT_BOOL, propVal);
}
/////////////////////////////////////////////////////////////////////////////
// CAstCheckBoxControl operations
@@ -0,0 +1,55 @@
#if !defined(AFX_ASTCHECKBOXCONTROL_H__3DE7A33E_C3ED_419E_B57F_46CA43CD67B9__INCLUDED_)
#define AFX_ASTCHECKBOXCONTROL_H__3DE7A33E_C3ED_419E_B57F_46CA43CD67B9__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// Machine generated IDispatch wrapper class(es) created by Microsoft Visual C++
// NOTE: Do not modify the contents of this file. If this class is regenerated by
// Microsoft Visual C++, your modifications will be overwritten.
/////////////////////////////////////////////////////////////////////////////
// CAstCheckBoxControl wrapper class
class CAstCheckBoxControl : public CWnd
{
protected:
DECLARE_DYNCREATE(CAstCheckBoxControl)
public:
CLSID const& GetClsid()
{
static CLSID const clsid
= { 0x17d55625, 0x30d6, 0x421f, { 0x8a, 0x3f, 0x85, 0xc6, 0x15, 0xff, 0xa9, 0x3c } };
return clsid;
}
virtual BOOL Create(LPCTSTR lpszClassName,
LPCTSTR lpszWindowName, DWORD dwStyle,
const RECT& rect,
CWnd* pParentWnd, UINT nID,
CCreateContext* pContext = NULL)
{ return CreateControl(GetClsid(), lpszWindowName, dwStyle, rect, pParentWnd, nID); }
BOOL Create(LPCTSTR lpszWindowName, DWORD dwStyle,
const RECT& rect, CWnd* pParentWnd, UINT nID,
CFile* pPersist = NULL, BOOL bStorage = FALSE,
BSTR bstrLicKey = NULL)
{ return CreateControl(GetClsid(), lpszWindowName, dwStyle, rect, pParentWnd, nID,
pPersist, bStorage, bstrLicKey); }
// Attributes
public:
long GetCaptionKey();
void SetCaptionKey(long);
BOOL GetValue();
void SetValue(BOOL);
BOOL GetEnabled();
void SetEnabled(BOOL);
// Operations
public:
};
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_ASTCHECKBOXCONTROL_H__3DE7A33E_C3ED_419E_B57F_46CA43CD67B9__INCLUDED_)
@@ -0,0 +1,149 @@
// Machine generated IDispatch wrapper class(es) created by Microsoft Visual C++
// NOTE: Do not modify the contents of this file. If this class is regenerated by
// Microsoft Visual C++, your modifications will be overwritten.
#include "pch.h"
#include "astcombotablecontrol.h"
/////////////////////////////////////////////////////////////////////////////
// CAstComboTableControl
IMPLEMENT_DYNCREATE(CAstComboTableControl, CWnd)
/////////////////////////////////////////////////////////////////////////////
// CAstComboTableControl properties
CString CAstComboTableControl::GetTableName()
{
CString result;
GetProperty(0x1, VT_BSTR, (void*)&result);
return result;
}
void CAstComboTableControl::SetTableName(LPCTSTR propVal)
{
SetProperty(0x1, VT_BSTR, propVal);
}
void CAstComboTableControl::SetDSNTableName(CString strDSN)
{
CString strDSNTableName = GetTableName();
if (!strDSNTableName.IsEmpty() && strDSNTableName.Find(_T("."))==-1)
{
strDSNTableName = CString(strDSN) + CString(L".") + strDSNTableName;
}
SetProperty(0x1, VT_BSTR, strDSNTableName.GetString());
}
long CAstComboTableControl::GetComboIndex()
{
long result;
GetProperty(0x2, VT_I4, (void*)&result);
return result;
}
void CAstComboTableControl::SetComboIndex(long propVal)
{
SetProperty(0x2, VT_I4, propVal);
}
CString CAstComboTableControl::GetComboCaption()
{
CString result;
GetProperty(0x3, VT_BSTR, (void*)&result);
return result;
}
void CAstComboTableControl::SetComboCaption(LPCTSTR propVal)
{
SetProperty(0x3, VT_BSTR, propVal);
}
long CAstComboTableControl::GetLabelLength()
{
long result;
GetProperty(0x4, VT_I4, (void*)&result);
return result;
}
void CAstComboTableControl::SetLabelLength(long propVal)
{
SetProperty(0x4, VT_I4, propVal);
}
long CAstComboTableControl::GetLabelKey()
{
long result;
GetProperty(0x5, VT_I4, (void*)&result);
return result;
}
void CAstComboTableControl::SetLabelKey(long propVal)
{
SetProperty(0x5, VT_I4, propVal);
}
BOOL CAstComboTableControl::GetSort()
{
BOOL result;
GetProperty(0x6, VT_BOOL, (void*)&result);
return result;
}
void CAstComboTableControl::SetSort(BOOL propVal)
{
SetProperty(0x6, VT_BOOL, propVal);
}
BOOL CAstComboTableControl::GetEnabled()
{
BOOL result;
GetProperty(DISPID_ENABLED, VT_BOOL, (void*)&result);
return result;
}
void CAstComboTableControl::SetEnabled(BOOL propVal)
{
SetProperty(DISPID_ENABLED, VT_BOOL, propVal);
}
long CAstComboTableControl::GetLongKey()
{
long result;
GetProperty(0x7, VT_I4, (void*)&result);
return result;
}
void CAstComboTableControl::SetLongKey(long propVal)
{
SetProperty(0x7, VT_I4, propVal);
}
double CAstComboTableControl::GetDoubleKey()
{
double result;
GetProperty(0x8, VT_R8, (void*)&result);
return result;
}
void CAstComboTableControl::SetDoubleKey(double propVal)
{
SetProperty(0x8, VT_R8, propVal);
}
CString CAstComboTableControl::GetStringKey()
{
CString result;
GetProperty(0x9, VT_BSTR, (void*)&result);
return result;
}
void CAstComboTableControl::SetStringKey(LPCTSTR propVal)
{
SetProperty(0x9, VT_BSTR, propVal);
}
/////////////////////////////////////////////////////////////////////////////
// CAstComboTableControl operations
@@ -0,0 +1,70 @@
#if !defined(AFX_ASTCOMBOTABLECONTROL_H__F0089DE6_AC5E_4C13_A7BD_EBCAF601FDB0__INCLUDED_)
#define AFX_ASTCOMBOTABLECONTROL_H__F0089DE6_AC5E_4C13_A7BD_EBCAF601FDB0__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// Machine generated IDispatch wrapper class(es) created by Microsoft Visual C++
// NOTE: Do not modify the contents of this file. If this class is regenerated by
// Microsoft Visual C++, your modifications will be overwritten.
/////////////////////////////////////////////////////////////////////////////
// CAstComboTableControl wrapper class
class CAstComboTableControl : public CWnd
{
protected:
DECLARE_DYNCREATE(CAstComboTableControl)
public:
CLSID const& GetClsid()
{
static CLSID const clsid
= { 0xfeaa9dcf, 0x65c5, 0x4650, { 0xb5, 0xcb, 0xb1, 0xa9, 0x14, 0xb6, 0x19, 0xfe } };
return clsid;
}
virtual BOOL Create(LPCTSTR lpszClassName,
LPCTSTR lpszWindowName, DWORD dwStyle,
const RECT& rect,
CWnd* pParentWnd, UINT nID,
CCreateContext* pContext = NULL)
{ return CreateControl(GetClsid(), lpszWindowName, dwStyle, rect, pParentWnd, nID); }
BOOL Create(LPCTSTR lpszWindowName, DWORD dwStyle,
const RECT& rect, CWnd* pParentWnd, UINT nID,
CFile* pPersist = NULL, BOOL bStorage = FALSE,
BSTR bstrLicKey = NULL)
{ return CreateControl(GetClsid(), lpszWindowName, dwStyle, rect, pParentWnd, nID,
pPersist, bStorage, bstrLicKey); }
// Attributes
public:
CString GetTableName();
void SetTableName(LPCTSTR);
void SetDSNTableName(CString);
long GetComboIndex();
void SetComboIndex(long);
CString GetComboCaption();
void SetComboCaption(LPCTSTR);
long GetLabelLength();
void SetLabelLength(long);
long GetLabelKey();
void SetLabelKey(long);
BOOL GetSort();
void SetSort(BOOL);
BOOL GetEnabled();
void SetEnabled(BOOL);
long GetLongKey();
void SetLongKey(long);
double GetDoubleKey();
void SetDoubleKey(double);
CString GetStringKey();
void SetStringKey(LPCTSTR);
// Operations
public:
};
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_ASTCOMBOTABLECONTROL_H__F0089DE6_AC5E_4C13_A7BD_EBCAF601FDB0__INCLUDED_)
@@ -0,0 +1,203 @@
// Machine generated IDispatch wrapper class(es) created by Microsoft Visual C++
// NOTE: Do not modify the contents of this file. If this class is regenerated by
// Microsoft Visual C++, your modifications will be overwritten.
#include "pch.h"
#include "astgratingcontrol.h"
/////////////////////////////////////////////////////////////////////////////
// CAstGratingControl
IMPLEMENT_DYNCREATE(CAstGratingControl, CWnd)
/////////////////////////////////////////////////////////////////////////////
// CAstGratingControl properties
CString CAstGratingControl::GetCurrentSize()
{
CString result;
GetProperty(0x6, VT_BSTR, (void*)&result);
return result;
}
void CAstGratingControl::SetCurrentSize(LPCTSTR propVal)
{
SetProperty(0x6, VT_BSTR, propVal);
}
CString CAstGratingControl::GetCurrentClass()
{
CString result;
GetProperty(0x7, VT_BSTR, (void*)&result);
return result;
}
void CAstGratingControl::SetCurrentClass(LPCTSTR propVal)
{
SetProperty(0x7, VT_BSTR, propVal);
}
long CAstGratingControl::GetGratingType()
{
long result;
GetProperty(0x8, VT_I4, (void*)&result);
return result;
}
void CAstGratingControl::SetGratingType(long propVal)
{
SetProperty(0x8, VT_I4, propVal);
}
long CAstGratingControl::GetShowGratingTypeCombo()
{
long result;
GetProperty(0x9, VT_I4, (void*)&result);
return result;
}
void CAstGratingControl::SetShowGratingTypeCombo(long propVal)
{
SetProperty(0x9, VT_I4, propVal);
}
long CAstGratingControl::GetLabelLengthAll()
{
long result;
GetProperty(0xa, VT_I4, (void*)&result);
return result;
}
void CAstGratingControl::SetLabelLengthAll(long propVal)
{
SetProperty(0xa, VT_I4, propVal);
}
long CAstGratingControl::GetSummaryRepresentation()
{
long result;
GetProperty(0xb, VT_I4, (void*)&result);
return result;
}
void CAstGratingControl::SetSummaryRepresentation(long propVal)
{
SetProperty(0xb, VT_I4, propVal);
}
/////////////////////////////////////////////////////////////////////////////
// CAstGratingControl operations
long CAstGratingControl::GetLabelDBKey(long ctrl)
{
long result;
static BYTE parms[] =
VTS_I4;
InvokeHelper(0x2, DISPATCH_METHOD, VT_I4, (void*)&result, parms,
ctrl);
return result;
}
void CAstGratingControl::SetLabelDBKey(long ctrl, long nNewValue)
{
static BYTE parms[] =
VTS_I4 VTS_I4;
InvokeHelper(0x3, DISPATCH_METHOD, VT_EMPTY, NULL, parms,
ctrl, nNewValue);
}
long CAstGratingControl::GetLabelLength(long ctrl)
{
long result;
static BYTE parms[] =
VTS_I4;
InvokeHelper(0x4, DISPATCH_METHOD, VT_I4, (void*)&result, parms,
ctrl);
return result;
}
void CAstGratingControl::SetLabelLength(long ctrl, long nNewValue)
{
static BYTE parms[] =
VTS_I4 VTS_I4;
InvokeHelper(0x5, DISPATCH_METHOD, VT_EMPTY, NULL, parms,
ctrl, nNewValue);
}
BOOL CAstGratingControl::GetEnabled()
{
BOOL result;
GetProperty(DISPID_ENABLED, VT_BOOL, (void*)&result);
return result;
}
void CAstGratingControl::SetEnabled(BOOL propVal)
{
SetProperty(DISPID_ENABLED, VT_BOOL, propVal);
}
BOOL CAstGratingControl::GetAppearance()
{
BOOL result;
GetProperty(0xc, VT_BOOL, (void*)&result);
return result;
}
void CAstGratingControl::SetAppearance(BOOL propVal)
{
SetProperty(0xc, VT_BOOL, propVal);
}
long CAstGratingControl::GetDropHeight()
{
long result;
GetProperty(0xd, VT_I4, (void*)&result);
return result;
}
void CAstGratingControl::SetDropHeight(long propVal)
{
SetProperty(0xd, VT_I4, propVal);
}
long CAstGratingControl::GetDropWidth()
{
long result;
GetProperty(0xe, VT_I4, (void*)&result);
return result;
}
void CAstGratingControl::SetDropWidth(long propVal)
{
SetProperty(0xe, VT_I4, propVal);
}
BOOL CAstGratingControl::GetSummaryDroppedDown()
{
BOOL result;
GetProperty(0xf, VT_BOOL, (void*)&result);
return result;
}
void CAstGratingControl::SetSummaryDroppedDown(BOOL propVal)
{
SetProperty(0xf, VT_BOOL, propVal);
}
CString CAstGratingControl::GetGridCellDisplayName()
{
CString result;
GetProperty(0x10, VT_BSTR, (void*)&result);
return result;
}
void CAstGratingControl::SetGridCellDisplayName(LPCTSTR propVal)
{
SetProperty(0x10, VT_BSTR, propVal);
}
@@ -0,0 +1,77 @@
#if !defined(AFX_ASTGRATINGCONTROL_H__3171B533_EE2B_4609_A8DD_E9ADD3AFAE37__INCLUDED_)
#define AFX_ASTGRATINGCONTROL_H__3171B533_EE2B_4609_A8DD_E9ADD3AFAE37__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// Machine generated IDispatch wrapper class(es) created by Microsoft Visual C++
// NOTE: Do not modify the contents of this file. If this class is regenerated by
// Microsoft Visual C++, your modifications will be overwritten.
/////////////////////////////////////////////////////////////////////////////
// CAstGratingControl wrapper class
class CAstGratingControl : public CWnd
{
protected:
DECLARE_DYNCREATE(CAstGratingControl)
public:
CLSID const& GetClsid()
{
static CLSID const clsid
= { 0xccddd738, 0x9cda, 0x4677, { 0x88, 0x85, 0x5, 0x7f, 0x2, 0x56, 0xf6, 0x1c } };
return clsid;
}
virtual BOOL Create(LPCTSTR lpszClassName,
LPCTSTR lpszWindowName, DWORD dwStyle,
const RECT& rect,
CWnd* pParentWnd, UINT nID,
CCreateContext* pContext = NULL)
{ return CreateControl(GetClsid(), lpszWindowName, dwStyle, rect, pParentWnd, nID); }
BOOL Create(LPCTSTR lpszWindowName, DWORD dwStyle,
const RECT& rect, CWnd* pParentWnd, UINT nID,
CFile* pPersist = NULL, BOOL bStorage = FALSE,
BSTR bstrLicKey = NULL)
{ return CreateControl(GetClsid(), lpszWindowName, dwStyle, rect, pParentWnd, nID,
pPersist, bStorage, bstrLicKey); }
// Attributes
public:
CString GetCurrentSize();
void SetCurrentSize(LPCTSTR);
CString GetCurrentClass();
void SetCurrentClass(LPCTSTR);
long GetGratingType();
void SetGratingType(long);
long GetShowGratingTypeCombo();
void SetShowGratingTypeCombo(long);
long GetLabelLengthAll();
void SetLabelLengthAll(long);
BOOL GetEnabled();
void SetEnabled(BOOL);
long GetSummaryRepresentation();
void SetSummaryRepresentation(long);
BOOL GetAppearance();
void SetAppearance(BOOL);
long GetDropHeight();
void SetDropHeight(long);
long GetDropWidth();
void SetDropWidth(long);
BOOL GetSummaryDroppedDown();
void SetSummaryDroppedDown(BOOL);
CString GetGridCellDisplayName();
void SetGridCellDisplayName(LPCTSTR);
// property 'Enabled' not emitted because of invalid type
// Operations
public:
long GetLabelDBKey(long ctrl);
void SetLabelDBKey(long ctrl, long nNewValue);
long GetLabelLength(long ctrl);
void SetLabelLength(long ctrl, long nNewValue);
};
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_ASTGRATINGCONTROL_H__3171B533_EE2B_4609_A8DD_E9ADD3AFAE37__INCLUDED_)
@@ -0,0 +1,19 @@
// Machine generated IDispatch wrapper class(es) created by Microsoft Visual C++
// NOTE: Do not modify the contents of this file. If this class is regenerated by
// Microsoft Visual C++, your modifications will be overwritten.
#include "pch.h"
#include "astmodelrolecontrol.h"
/////////////////////////////////////////////////////////////////////////////
// CAstmodelrolecontrol
IMPLEMENT_DYNCREATE(CAstModelRoleControl, CWnd)
/////////////////////////////////////////////////////////////////////////////
// CAstmodelrolecontrol properties
/////////////////////////////////////////////////////////////////////////////
// CAstmodelrolecontrol operations
@@ -0,0 +1,153 @@
#pragma once
// Machine generated IDispatch wrapper class(es) created by Microsoft Visual C++
// NOTE: Do not modify the contents of this file. If this class is regenerated by
// Microsoft Visual C++, your modifications will be overwritten.
/////////////////////////////////////////////////////////////////////////////
// CAstmodelrolecontrol wrapper class
class CAstModelRoleControl : public CWnd
{
protected:
DECLARE_DYNCREATE(CAstModelRoleControl)
public:
CLSID const& GetClsid()
{
static CLSID const clsid
= { 0xEECAC4EE, 0xAA4C, 0x471C, { 0xAD, 0xA, 0xC1, 0x55, 0x7E, 0xB8, 0x28, 0xDC } };
return clsid;
}
virtual BOOL Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle,
const RECT& rect, CWnd* pParentWnd, UINT nID,
CCreateContext* pContext = NULL)
{
return CreateControl(GetClsid(), lpszWindowName, dwStyle, rect, pParentWnd, nID);
}
BOOL Create(LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd,
UINT nID, CFile* pPersist = NULL, BOOL bStorage = FALSE,
BSTR bstrLicKey = NULL)
{
return CreateControl(GetClsid(), lpszWindowName, dwStyle, rect, pParentWnd, nID,
pPersist, bStorage, bstrLicKey);
}
// Attributes
public:
enum
{
kEditBox = 0,
kListBox = 1,
kComboBox = 2,
kCheckBox = 3,
kProfileEdit = 4,
kButton = 5
}eColumnType;
enum
{
kUnits = 0,
kDouble = 1,
kInteger = 2,
kString = 3
}eColumnDataType;
enum
{
kUnitDistance = 0,
kUnitAngle = 1,
kUnitWeight = 2,
kUnitDistanceGUI = 3,
kUnitArea = 4,
kUnitVolume = 5,
kUnitForce = 6,
kUnitMoment = 7
}eColumnUnitType;
enum
{
kBeam = 1,
kPlate = 2
}eGroupingRole;
enum
{
kGratingStandard = 0,
kGratingVariable = 1
}eGratingType;
enum
{
kType = 0,
kClass = 1,
kSize = 2
}eGratingControls;
enum
{
kNull = 0,
kAnglePage = 1,
kAreaPage = 2,
kWeightPage = 4,
kLengthPage = 8,
kWeightPerDistancePage = 16,
kAllPages = 255
}eFirstPage;
// Operations
public:
// _DAstModelRoleControl
// Functions
//
void SelectItemByKey(LPCTSTR Key)
{
static BYTE parms[] = VTS_BSTR ;
InvokeHelper(0x4, DISPATCH_METHOD, VT_EMPTY, NULL, parms, Key);
}
CString getSelectedItemKey()
{
CString result;
InvokeHelper(0x5, DISPATCH_METHOD, VT_BSTR, (void*)&result, NULL);
return result;
}
void SetObjectType(long objectType)
{
static BYTE parms[] = VTS_I4 ;
InvokeHelper(0x6, DISPATCH_METHOD, VT_EMPTY, NULL, parms, objectType);
}
// Properties
//
long GetLabelDbKey()
{
long result;
GetProperty(0x2, VT_I4, (void*)&result);
return result;
}
void SetLabelDbKey(long propVal)
{
SetProperty(0x2, VT_I4, propVal);
}
long GetLabelLength()
{
long result;
GetProperty(0x3, VT_I4, (void*)&result);
return result;
}
void SetLabelLength(long propVal)
{
SetProperty(0x3, VT_I4, propVal);
}
BOOL GetEnabled()
{
BOOL result;
GetProperty(DISPID_ENABLED, VT_BOOL, (void*)&result);
return result;
}
void SetEnabled(BOOL propVal)
{
SetProperty(DISPID_ENABLED, VT_BOOL, propVal);
}
};
@@ -0,0 +1,578 @@
// Machine generated IDispatch wrapper class(es) created by Microsoft Visual C++
// NOTE: Do not modify the contents of this file. If this class is regenerated by
// Microsoft Visual C++, your modifications will be overwritten.
#include "pch.h"
#include "astocxgrid.h"
#include "unitsmanager.h"
// Dispatch interfaces referenced by this interface
/////////////////////////////////////////////////////////////////////////////
// CAstOCXGrid
IMPLEMENT_DYNCREATE(CAstOCXGrid, CWnd)
/////////////////////////////////////////////////////////////////////////////
// CAstOCXGrid properties
long CAstOCXGrid::GetColumnCount()
{
long result;
GetProperty(0x1, VT_I4, (void*)&result);
return result;
}
void CAstOCXGrid::SetColumnCount(long propVal)
{
SetProperty(0x1, VT_I4, propVal);
}
long CAstOCXGrid::GetRowCount()
{
long result;
GetProperty(0x2, VT_I4, (void*)&result);
return result;
}
void CAstOCXGrid::SetRowCount(long propVal)
{
SetProperty(0x2, VT_I4, propVal);
}
long CAstOCXGrid::GetFixedRowCount()
{
long result;
GetProperty(0x3, VT_I4, (void*)&result);
return result;
}
void CAstOCXGrid::SetFixedRowCount(long propVal)
{
SetProperty(0x3, VT_I4, propVal);
}
long CAstOCXGrid::GetFixedColumnCount()
{
long result;
GetProperty(0x4, VT_I4, (void*)&result);
return result;
}
void CAstOCXGrid::SetFixedColumnCount(long propVal)
{
SetProperty(0x4, VT_I4, propVal);
}
CUnitsManager CAstOCXGrid::GetUnits()
{
LPDISPATCH pDispatch;
GetProperty(0x5, VT_DISPATCH, (void*)&pDispatch);
return CUnitsManager(pDispatch);
}
void CAstOCXGrid::SetUnits(LPDISPATCH propVal)
{
SetProperty(0x5, VT_DISPATCH, propVal);
}
BOOL CAstOCXGrid::GetHeaderSort()
{
BOOL result;
GetProperty(0x6, VT_BOOL, (void*)&result);
return result;
}
void CAstOCXGrid::SetHeaderSort(BOOL propVal)
{
SetProperty(0x6, VT_BOOL, propVal);
}
BOOL CAstOCXGrid::GetListMode()
{
BOOL result;
GetProperty(0x7, VT_BOOL, (void*)&result);
return result;
}
void CAstOCXGrid::SetListMode(BOOL propVal)
{
SetProperty(0x7, VT_BOOL, propVal);
}
/////////////////////////////////////////////////////////////////////////////
// CAstOCXGrid operations
long CAstOCXGrid::GetRowHeight(long nRow)
{
long result;
static BYTE parms[] =
VTS_I4;
InvokeHelper(0x8, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, parms,
nRow);
return result;
}
void CAstOCXGrid::SetRowHeight(long nRow, long nNewValue)
{
static BYTE parms[] =
VTS_I4 VTS_I4;
InvokeHelper(0x8, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms,
nRow, nNewValue);
}
long CAstOCXGrid::GetColumnWidth(long nColumn)
{
long result;
static BYTE parms[] =
VTS_I4;
InvokeHelper(0x9, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, parms,
nColumn);
return result;
}
void CAstOCXGrid::SetColumnWidth(long nColumn, long nNewValue)
{
static BYTE parms[] =
VTS_I4 VTS_I4;
InvokeHelper(0x9, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms,
nColumn, nNewValue);
}
unsigned long CAstOCXGrid::GetCellBkColor(long nRow, long nCol)
{
unsigned long result;
static BYTE parms[] =
VTS_I4 VTS_I4;
InvokeHelper(0xa, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, parms,
nRow, nCol);
return result;
}
void CAstOCXGrid::SetCellBkColor(long nRow, long nCol, unsigned long newValue)
{
static BYTE parms[] =
VTS_I4 VTS_I4 VTS_I4;
InvokeHelper(0xa, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms,
nRow, nCol, newValue);
}
unsigned long CAstOCXGrid::GetCellFgColor(long nRow, long nCol)
{
unsigned long result;
static BYTE parms[] =
VTS_I4 VTS_I4;
InvokeHelper(0xb, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, parms,
nRow, nCol);
return result;
}
void CAstOCXGrid::SetCellFgColor(long nRow, long nCol, unsigned long newValue)
{
static BYTE parms[] =
VTS_I4 VTS_I4 VTS_I4;
InvokeHelper(0xb, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms,
nRow, nCol, newValue);
}
long CAstOCXGrid::GetColumnType(long nCol)
{
long result;
static BYTE parms[] =
VTS_I4;
InvokeHelper(0xc, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, parms,
nCol);
return result;
}
void CAstOCXGrid::SetColumnType(long nCol, long nNewValue)
{
static BYTE parms[] =
VTS_I4 VTS_I4;
InvokeHelper(0xc, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms,
nCol, nNewValue);
}
long CAstOCXGrid::GetColumnDataType(long nCol)
{
long result;
static BYTE parms[] =
VTS_I4;
InvokeHelper(0xd, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, parms,
nCol);
return result;
}
void CAstOCXGrid::SetColumnDataType(long nCol, long nNewValue)
{
static BYTE parms[] =
VTS_I4 VTS_I4;
InvokeHelper(0xd, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms,
nCol, nNewValue);
}
long CAstOCXGrid::GetColumnUnits(long nCol)
{
long result;
static BYTE parms[] =
VTS_I4;
InvokeHelper(0xe, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, parms,
nCol);
return result;
}
void CAstOCXGrid::SetColumnUnits(long nCol, long nNewValue)
{
static BYTE parms[] =
VTS_I4 VTS_I4;
InvokeHelper(0xe, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms,
nCol, nNewValue);
}
double CAstOCXGrid::GetItemDoubleValue(long nRow, long nCol)
{
double result;
static BYTE parms[] =
VTS_I4 VTS_I4;
InvokeHelper(0xf, DISPATCH_PROPERTYGET, VT_R8, (void*)&result, parms,
nRow, nCol);
return result;
}
void CAstOCXGrid::SetItemDoubleValue(long nRow, long nCol, double newValue)
{
static BYTE parms[] =
VTS_I4 VTS_I4 VTS_R8;
InvokeHelper(0xf, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms,
nRow, nCol, newValue);
}
long CAstOCXGrid::GetItemIntegerValue(long nRow, long nCol)
{
long result;
static BYTE parms[] =
VTS_I4 VTS_I4;
InvokeHelper(0x10, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, parms,
nRow, nCol);
return result;
}
void CAstOCXGrid::SetItemIntegerValue(long nRow, long nCol, long nNewValue)
{
static BYTE parms[] =
VTS_I4 VTS_I4 VTS_I4;
InvokeHelper(0x10, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms,
nRow, nCol, nNewValue);
}
CString CAstOCXGrid::GetItemTextValue(long nRow, long nCol)
{
CString result;
static BYTE parms[] =
VTS_I4 VTS_I4;
InvokeHelper(0x11, DISPATCH_PROPERTYGET, VT_BSTR, (void*)&result, parms,
nRow, nCol);
return result;
}
void CAstOCXGrid::SetItemTextValue(long nRow, long nCol, LPCTSTR lpszNewValue)
{
static BYTE parms[] =
VTS_I4 VTS_I4 VTS_BSTR;
InvokeHelper(0x11, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms,
nRow, nCol, lpszNewValue);
}
long CAstOCXGrid::GetFocusCellRow()
{
long result;
InvokeHelper(0x12, DISPATCH_METHOD, VT_I4, (void*)&result, NULL);
return result;
}
long CAstOCXGrid::GetFocusCellColumn()
{
long result;
InvokeHelper(0x13, DISPATCH_METHOD, VT_I4, (void*)&result, NULL);
return result;
}
void CAstOCXGrid::EnableCell(long nRow, long nCol, short bEnable)
{
static BYTE parms[] =
VTS_I4 VTS_I4 VTS_I2;
InvokeHelper(0x14, DISPATCH_METHOD, VT_EMPTY, NULL, parms,
nRow, nCol, bEnable);
}
long CAstOCXGrid::InsertColumn(BSTR* strHeading, long nFormat, long nCol, long nType, long dataType/* = 0*/, long unitType/* = 0*/)
{
long result;
static BYTE parms[] =
VTS_PBSTR VTS_I4 VTS_I4 VTS_I4 VTS_I4 VTS_I4;
InvokeHelper(0x15, DISPATCH_METHOD, VT_I4, (void*)&result, parms,
strHeading, nFormat, nCol, nType, dataType, unitType);
return result;
}
long CAstOCXGrid::InsertRow(BSTR* strHeading, long nRow)
{
long result;
static BYTE parms[] =
VTS_PBSTR VTS_I4;
InvokeHelper(0x16, DISPATCH_METHOD, VT_I4, (void*)&result, parms,
strHeading, nRow);
return result;
}
BOOL CAstOCXGrid::DeleteColumn(long nCol)
{
BOOL result;
static BYTE parms[] =
VTS_I4;
InvokeHelper(0x17, DISPATCH_METHOD, VT_BOOL, (void*)&result, parms,
nCol);
return result;
}
BOOL CAstOCXGrid::DeleteRow(long nRow)
{
BOOL result;
static BYTE parms[] =
VTS_I4;
InvokeHelper(0x18, DISPATCH_METHOD, VT_BOOL, (void*)&result, parms,
nRow);
return result;
}
BOOL CAstOCXGrid::DeleteAllItems()
{
BOOL result;
InvokeHelper(0x19, DISPATCH_METHOD, VT_BOOL, (void*)&result, NULL);
return result;
}
void CAstOCXGrid::AddStringToControl(BSTR* newValue)
{
static BYTE parms[] =
VTS_PBSTR;
InvokeHelper(0x1a, DISPATCH_METHOD, VT_EMPTY, NULL, parms,
newValue);
}
BOOL CAstOCXGrid::SortItems(long nCol, short bAscending)
{
BOOL result;
static BYTE parms[] =
VTS_I4 VTS_I2;
InvokeHelper(0x1b, DISPATCH_METHOD, VT_BOOL, (void*)&result, parms,
nCol, bAscending);
return result;
}
void CAstOCXGrid::SetChecked(long nRow, long nCol, short nChecked)
{
static BYTE parms[] =
VTS_I4 VTS_I4 VTS_I2;
InvokeHelper(0x1c, DISPATCH_METHOD, VT_EMPTY, NULL, parms,
nRow, nCol, nChecked);
}
void CAstOCXGrid::AutoSizeRow(long nRow)
{
static BYTE parms[] =
VTS_I4;
InvokeHelper(0x1d, DISPATCH_METHOD, VT_EMPTY, NULL, parms,
nRow);
}
void CAstOCXGrid::AutoSizeColumn(long nCol)
{
static BYTE parms[] =
VTS_I4;
InvokeHelper(0x1e, DISPATCH_METHOD, VT_EMPTY, NULL, parms,
nCol);
}
void CAstOCXGrid::AutoSizeRows()
{
InvokeHelper(0x1f, DISPATCH_METHOD, VT_EMPTY, NULL, NULL);
}
void CAstOCXGrid::AutoSizeColumns()
{
InvokeHelper(0x20, DISPATCH_METHOD, VT_EMPTY, NULL, NULL);
}
void CAstOCXGrid::AutoSize()
{
InvokeHelper(0x21, DISPATCH_METHOD, VT_EMPTY, NULL, NULL);
}
void CAstOCXGrid::ExpandColumnsToFit()
{
InvokeHelper(0x22, DISPATCH_METHOD, VT_EMPTY, NULL, NULL);
}
void CAstOCXGrid::ExpandRowsToFit()
{
InvokeHelper(0x23, DISPATCH_METHOD, VT_EMPTY, NULL, NULL);
}
void CAstOCXGrid::ExpandToFit()
{
InvokeHelper(0x24, DISPATCH_METHOD, VT_EMPTY, NULL, NULL);
}
void CAstOCXGrid::AboutBox()
{
InvokeHelper(0xfffffdd8, DISPATCH_METHOD, VT_EMPTY, NULL, NULL);
}
void CAstOCXGrid::SetEditable(BOOL bEditable)
{
static BYTE params[] = VTS_BOOL;
InvokeHelper(0x25, DISPATCH_METHOD, VT_EMPTY, NULL, params, bEditable );
}
void CAstOCXGrid::RedrawCell(long nRow, long nCol)
{
static BYTE params[] = VTS_I4 VTS_I4;
InvokeHelper(0x26, DISPATCH_METHOD, VT_EMPTY, NULL, params, nRow, nCol);
}
unsigned long CAstOCXGrid::GetGridBkColor()
{
unsigned long result;
InvokeHelper(0x27, DISPATCH_PROPERTYGET, VT_UI4, (void*)&result, NULL);
return result;
}
void CAstOCXGrid::SetGridBkColor(unsigned long newValue)
{
static BYTE parms[] = VTS_UI4 ;
InvokeHelper(0x27, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue);
}
void CAstOCXGrid::AddTableToComboCol(long nCol, LPCTSTR lpszNewValue)
{
static BYTE parms[] =
VTS_I4 VTS_BSTR;
InvokeHelper(0x28, DISPATCH_METHOD, VT_EMPTY, NULL, parms, nCol, lpszNewValue);
}
BOOL CAstOCXGrid::GetSortCombo()
{
BOOL result;
GetProperty(0x29, VT_BOOL, (void*)&result);
return result;
}
void CAstOCXGrid::SetSortCombo(BOOL propVal)
{
SetProperty(0x29, VT_BOOL, propVal);
}
void CAstOCXGrid::SetLongKey(long nRow, long nCol, long nNewValue)
{
static BYTE parms[] =
VTS_I4 VTS_I4 VTS_I4;
InvokeHelper(0x2A, DISPATCH_METHOD, VT_EMPTY, NULL, parms, nRow, nCol, nNewValue);
}
long CAstOCXGrid::GetLongKey(long nRow, long nCol)
{
BOOL result;
static BYTE parms[] =
VTS_I4 VTS_I4;
InvokeHelper(0x2B, DISPATCH_METHOD, VT_I4, (void*)&result, parms,
nRow, nCol);
return result;
}
void CAstOCXGrid::SetStringKey(long nRow, long nCol, LPCTSTR lpszNewValue)
{
static BYTE parms[] =
VTS_I4 VTS_I4 VTS_BSTR;
InvokeHelper(0x2C, DISPATCH_METHOD, VT_EMPTY, NULL, parms, nRow, nCol, lpszNewValue);
}
BSTR CAstOCXGrid::GetStringKey(long nRow, long nCol)
{
BSTR result;
static BYTE parms[] =
VTS_I4 VTS_I4;
InvokeHelper(0x2D, DISPATCH_METHOD, VT_BSTR, (void*)&result, parms,
nRow, nCol);
return result;
}
void CAstOCXGrid::SetProfileName(long nRow, long nCol, LPCTSTR lpszNewValue)
{
static BYTE parms[] =
VTS_I4 VTS_I4 VTS_BSTR;
InvokeHelper(0x2E, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, nRow, nCol, lpszNewValue);
}
CString CAstOCXGrid::GetProfileName(long nRow, long nCol)
{
CString result;
static BYTE parms[] =
VTS_I4 VTS_I4;
InvokeHelper(0x2E, DISPATCH_PROPERTYGET, VT_BSTR, (void*)&result, parms,
nRow, nCol);
return result;
}
void CAstOCXGrid::SetCellReadOnly( long nRow, long nCol, short bReadOnly )
{
static BYTE params[] =
VTS_I4 VTS_I4 VTS_I2;
InvokeHelper(0x2F, DISPATCH_METHOD, VT_EMPTY, NULL, params,
nRow, nCol, bReadOnly);
}
long CAstOCXGrid::GetDataType(long nRow, long nCol)
{
long result;
static BYTE parms[] =
VTS_I4 VTS_I4;
InvokeHelper(0x30, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, parms,
nRow, nCol);
return result;
}
void CAstOCXGrid::SetDataType(long nRow, long nCol, long nNewValue)
{
static BYTE parms[] =
VTS_I2 VTS_I4 VTS_I4;
InvokeHelper(0x30, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms,
nRow, nCol, nNewValue);
}
long CAstOCXGrid::GetUnits(long nRow, long nCol)
{
long result;
static BYTE parms[] =
VTS_I4 VTS_I4;
InvokeHelper(0x31, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, parms,
nRow, nCol);
return result;
}
void CAstOCXGrid::SetUnits(long nRow, long nCol, long nNewValue)
{
static BYTE parms[] =
VTS_I2 VTS_I4 VTS_I4;
InvokeHelper(0x31, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms,
nRow, nCol, nNewValue);
}
void CAstOCXGrid::RedrawAllCells()
{
InvokeHelper(0x32, DISPATCH_METHOD, VT_EMPTY, NULL, VTS_NONE);
}
void CAstOCXGrid::AppendProfileAcceptedClassGroup( LPCTSTR lpszNewValue )
{
static BYTE parms[] = VTS_BSTR;
InvokeHelper(0x33, DISPATCH_METHOD, VT_EMPTY, NULL, parms, lpszNewValue);
}
@@ -0,0 +1,160 @@
#if !defined(AFX_ASTOCXGRID_H__A5C43C32_147D_4787_BA3E_AA692503E10F__INCLUDED_)
#define AFX_ASTOCXGRID_H__A5C43C32_147D_4787_BA3E_AA692503E10F__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// Machine generated IDispatch wrapper class(es) created by Microsoft Visual C++
// NOTE: Do not modify the contents of this file. If this class is regenerated by
// Microsoft Visual C++, your modifications will be overwritten.
// Dispatch interfaces referenced by this interface
class CUnitsManager;
/////////////////////////////////////////////////////////////////////////////
// CAstOCXGrid wrapper class
typedef enum ColumnType
{
kEditBox = 0,
kListBox = 1,
kComboBox = 2,
kCheckBox = 3,
kProfileEdit = 4,
kButton = 5,
kWeldEdit = 6,
kCrumbBox = 7
} eColumnType;
typedef enum CellDataType
{
kUnits = 0,
kDouble = 1,
kInteger = 2,
kString = 3
} eColumnDataType;
typedef enum CellUnitType
{
kUnitDistance = 0,
kUnitAngle = 1,
kUnitWeight = 2,
kUnitDistanceGUI = 3,
kUnitArea = 4,
kUnitVolume = 5,
kUnitForce = 6,
kUnitMoment = 7
} eColumnUnitType;
class CAstOCXGrid : public CWnd
{
protected:
DECLARE_DYNCREATE(CAstOCXGrid)
public:
CLSID const& GetClsid()
{
static CLSID const clsid
= { 0x2633a54, 0x53da, 0x4506, { 0xa8, 0xc5, 0xc5, 0x10, 0xc1, 0x81, 0xf2, 0x3c } };
return clsid;
}
virtual BOOL Create(LPCTSTR lpszClassName,
LPCTSTR lpszWindowName, DWORD dwStyle,
const RECT& rect,
CWnd* pParentWnd, UINT nID,
CCreateContext* pContext = NULL)
{ return CreateControl(GetClsid(), lpszWindowName, dwStyle, rect, pParentWnd, nID); }
BOOL Create(LPCTSTR lpszWindowName, DWORD dwStyle,
const RECT& rect, CWnd* pParentWnd, UINT nID,
CFile* pPersist = NULL, BOOL bStorage = FALSE,
BSTR bstrLicKey = NULL)
{ return CreateControl(GetClsid(), lpszWindowName, dwStyle, rect, pParentWnd, nID,
pPersist, bStorage, bstrLicKey); }
// Attributes
public:
long GetColumnCount();
void SetColumnCount(long);
long GetRowCount();
void SetRowCount(long);
long GetFixedRowCount();
void SetFixedRowCount(long);
long GetFixedColumnCount();
void SetFixedColumnCount(long);
CUnitsManager GetUnits();
void SetUnits(LPDISPATCH);
BOOL GetHeaderSort();
void SetHeaderSort(BOOL);
BOOL GetListMode();
void SetListMode(BOOL);
// Operations
public:
long GetRowHeight(long nRow);
void SetRowHeight(long nRow, long nNewValue);
long GetColumnWidth(long nColumn);
void SetColumnWidth(long nColumn, long nNewValue);
unsigned long GetCellBkColor(long nRow, long nCol);
void SetCellBkColor(long nRow, long nCol, unsigned long newValue);
unsigned long GetCellFgColor(long nRow, long nCol);
void SetCellFgColor(long nRow, long nCol, unsigned long newValue);
unsigned long GetGridBkColor();
void SetGridBkColor(unsigned long newValue);
long GetColumnType(long nCol);
void SetColumnType(long nCol, long nNewValue);
long GetColumnDataType(long nCol);
void SetColumnDataType(long nCol, long nNewValue);
long GetColumnUnits(long nCol);
void SetColumnUnits(long nCol, long nNewValue);
double GetItemDoubleValue(long nRow, long nCol);
void SetItemDoubleValue(long nRow, long nCol, double newValue);
long GetItemIntegerValue(long nRow, long nCol);
void SetItemIntegerValue(long nRow, long nCol, long nNewValue);
CString GetItemTextValue(long nRow, long nCol);
void SetItemTextValue(long nRow, long nCol, LPCTSTR lpszNewValue);
long GetFocusCellRow();
long GetFocusCellColumn();
void EnableCell(long nRow, long nCol, short bEnable);
long InsertColumn(BSTR* strHeading, long nFormat, long nCol, long nType, long dataType = kUnits, long unitType = kUnitDistance);
long InsertRow(BSTR* strHeading, long nRow);
BOOL DeleteColumn(long nCol);
BOOL DeleteRow(long nRow);
BOOL DeleteAllItems();
void AddStringToControl(BSTR* newValue);
BOOL SortItems(long nCol, short bAscending);
void SetChecked(long nRow, long nCol, short nChecked);
void AutoSizeRow(long nRow);
void AutoSizeColumn(long nCol);
void AutoSizeRows();
void AutoSizeColumns();
void AutoSize();
void ExpandColumnsToFit();
void ExpandRowsToFit();
void ExpandToFit();
void AboutBox();
void SetEditable(BOOL bEditable);
void RedrawCell(long nRow, long nCol);
void AddTableToComboCol(long nColumn, LPCTSTR tableName);
BOOL GetSortCombo();
void SetSortCombo(BOOL newStyle);
void SetLongKey(long nRow, long nCol, long nNewValue);
long GetLongKey(long nRow, long nCol);
void SetStringKey(long nRow, long nCol, LPCTSTR lpszNewValue);
BSTR GetStringKey(long nRow, long nCol);
void SetProfileName(long nRow, long nCol, LPCTSTR lpszNewValue);
CString GetProfileName(long nRow, long nCol);
void FillWeldCombo(long nColumn);
void SetCellReadOnly(long nRow, long nCol, short bReadOnly);
long GetDataType(long nRow, long nCol);
void SetDataType(long nRow, long nCol, long nNewValue);
long GetUnits(long nRow, long nCol);
void SetUnits(long nRow, long nCol, long nNewValue);
void RedrawAllCells();
void AppendProfileAcceptedClassGroup(LPCTSTR lpszNewValue);
};
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_ASTOCXGRID_H__A5C43C32_147D_4787_BA3E_AA692503E10F__INCLUDED_)
@@ -0,0 +1,273 @@
// Machine generated IDispatch wrapper class(es) created by Microsoft Visual C++
// NOTE: Do not modify the contents of this file. If this class is regenerated by
// Microsoft Visual C++, your modifications will be overwritten.
#include "pch.h"
#include "astprofilecontrol.h"
/////////////////////////////////////////////////////////////////////////////
// CAstProfileControl
IMPLEMENT_DYNCREATE(CAstProfileControl, CWnd)
/////////////////////////////////////////////////////////////////////////////
// CAstProfileControl properties
BOOL CAstProfileControl::GetShowHideAllSections()
{
BOOL result;
GetProperty(0x1, VT_BOOL, (void*)&result);
return result;
}
void CAstProfileControl::SetShowHideAllSections(BOOL propVal)
{
SetProperty(0x1, VT_BOOL, propVal);
}
CString CAstProfileControl::GetCurrentProfileName()
{
CString result;
GetProperty(0x2, VT_BSTR, (void*)&result);
return result;
}
void CAstProfileControl::SetCurrentProfileName(LPCTSTR propVal)
{
SetProperty(0x2, VT_BSTR, propVal);
}
CString CAstProfileControl::GetCurrentClass()
{
CString result;
GetProperty(0x3, VT_BSTR, (void*)&result);
return result;
}
void CAstProfileControl::SetCurrentClass(LPCTSTR propVal)
{
SetProperty(0x3, VT_BSTR, propVal);
}
CString CAstProfileControl::GetCurrentSection()
{
CString result;
GetProperty(0x4, VT_BSTR, (void*)&result);
return result;
}
void CAstProfileControl::SetCurrentSection(LPCTSTR propVal)
{
SetProperty(0x4, VT_BSTR, propVal);
}
long CAstProfileControl::GetCaptionClass()
{
long result;
GetProperty(0x5, VT_I4, (void*)&result);
return result;
}
void CAstProfileControl::SetCaptionClass(long propVal)
{
SetProperty(0x5, VT_I4, propVal);
}
long CAstProfileControl::GetCaptionTyp()
{
long result;
GetProperty(0x6, VT_I4, (void*)&result);
return result;
}
void CAstProfileControl::SetCaptionTyp(long propVal)
{
SetProperty(0x6, VT_I4, propVal);
}
long CAstProfileControl::GetCaptionShowHideAllSections()
{
long result;
GetProperty(0x7, VT_I4, (void*)&result);
return result;
}
void CAstProfileControl::SetCaptionShowHideAllSections(long propVal)
{
SetProperty(0x7, VT_I4, propVal);
}
BOOL CAstProfileControl::GetUseFilterClass()
{
BOOL result;
GetProperty(0x8, VT_BOOL, (void*)&result);
return result;
}
void CAstProfileControl::SetUseFilterClass(BOOL propVal)
{
SetProperty(0x8, VT_BOOL, propVal);
}
BOOL CAstProfileControl::GetCheckBoxOnLeft()
{
BOOL result;
GetProperty(0x9, VT_BOOL, (void*)&result);
return result;
}
void CAstProfileControl::SetCheckBoxOnLeft(BOOL propVal)
{
SetProperty(0x9, VT_BOOL, propVal);
}
long CAstProfileControl::GetLabelLength()
{
long result;
GetProperty(0xa, VT_I4, (void*)&result);
return result;
}
void CAstProfileControl::SetLabelLength(long propVal)
{
SetProperty(0xa, VT_I4, propVal);
}
CString CAstProfileControl::GetCurrentCrossSection()
{
CString result;
GetProperty(0xb, VT_BSTR, (void*)&result);
return result;
}
void CAstProfileControl::SetCurrentCrossSection(LPCTSTR propVal)
{
SetProperty(0xb, VT_BSTR, propVal);
}
BOOL CAstProfileControl::GetSummaryRepresentation()
{
BOOL result;
GetProperty(0xc, VT_BOOL, (void*)&result);
return result;
}
void CAstProfileControl::SetSummaryRepresentation(BOOL propVal)
{
SetProperty(0xc, VT_BOOL, propVal);
}
BOOL CAstProfileControl::GetAppearance()
{
BOOL result;
GetProperty(0xd, VT_BOOL, (void*)&result);
return result;
}
void CAstProfileControl::SetAppearance(BOOL propVal)
{
SetProperty(0xd, VT_BOOL, propVal);
}
long CAstProfileControl::GetDropHeight()
{
long result;
GetProperty(0xe, VT_I4, (void*)&result);
return result;
}
void CAstProfileControl::SetDropHeight(long propVal)
{
SetProperty(0xe, VT_I4, propVal);
}
long CAstProfileControl::GetDropWidth()
{
long result;
GetProperty(0xf, VT_I4, (void*)&result);
return result;
}
void CAstProfileControl::SetDropWidth(long propVal)
{
SetProperty(0xf, VT_I4, propVal);
}
BOOL CAstProfileControl::GetSummaryDroppedDown()
{
BOOL result;
GetProperty(0x10, VT_BOOL, (void*)&result);
return result;
}
void CAstProfileControl::SetSummaryDroppedDown(BOOL propVal)
{
SetProperty(0x10, VT_BOOL, propVal);
}
BOOL CAstProfileControl::GetEnabled()
{
BOOL result;
GetProperty(DISPID_ENABLED, VT_BOOL, (void*)&result);
return result;
}
void CAstProfileControl::SetEnabled(BOOL propVal)
{
SetProperty(DISPID_ENABLED, VT_BOOL, propVal);
}
BOOL CAstProfileControl::GetShowPromptOnTop()
{
BOOL result;
GetProperty(0x17, VT_BOOL, (void*)&result);
return result;
}
void CAstProfileControl::SetShowPromptOnTop(BOOL propVal)
{
SetProperty(0x17, VT_BOOL, propVal);
}
/////////////////////////////////////////////////////////////////////////////
// CAstProfileControl operations
void CAstProfileControl::AppendAcceptedClass(LPCTSTR newAcceptedClass)
{
static BYTE parms[] =
VTS_BSTR;
InvokeHelper(0x11, DISPATCH_METHOD, VT_EMPTY, NULL, parms,
newAcceptedClass);
}
void CAstProfileControl::RemoveAcceptedClass(LPCTSTR AcceptedClass)
{
static BYTE parms[] =
VTS_BSTR;
InvokeHelper(0x12, DISPATCH_METHOD, VT_EMPTY, NULL, parms,
AcceptedClass);
}
void CAstProfileControl::AppendAcceptedClassGroup(LPCTSTR SubtypeName)
{
static BYTE parms[] =
VTS_BSTR;
InvokeHelper(0x13, DISPATCH_METHOD, VT_EMPTY, NULL, parms,
SubtypeName);
}
void CAstProfileControl::RemoveAcceptedClassGroup(LPCTSTR SubtypeName)
{
static BYTE parms[] =
VTS_BSTR;
InvokeHelper(0x18, DISPATCH_METHOD, VT_EMPTY, NULL, parms,
SubtypeName);
}
void CAstProfileControl::Reset()
{
InvokeHelper(0x19, DISPATCH_METHOD, VT_EMPTY, NULL, VTS_NONE);
}
@@ -0,0 +1,90 @@
#if !defined(AFX_ASTPROFILECONTROL_H__AB9EFEEC_B473_4CD6_BED1_C5923EA79B15__INCLUDED_)
#define AFX_ASTPROFILECONTROL_H__AB9EFEEC_B473_4CD6_BED1_C5923EA79B15__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// Machine generated IDispatch wrapper class(es) created by Microsoft Visual C++
// NOTE: Do not modify the contents of this file. If this class is regenerated by
// Microsoft Visual C++, your modifications will be overwritten.
/////////////////////////////////////////////////////////////////////////////
// CAstProfileControl wrapper class
class CAstProfileControl : public CWnd
{
protected:
DECLARE_DYNCREATE(CAstProfileControl)
public:
CLSID const& GetClsid()
{
static CLSID const clsid
= { 0x574d51ef, 0x85f9, 0x415c, { 0x81, 0xce, 0x5a, 0xf, 0xc4, 0x5b, 0x1f, 0x79 } };
return clsid;
}
virtual BOOL Create(LPCTSTR lpszClassName,
LPCTSTR lpszWindowName, DWORD dwStyle,
const RECT& rect,
CWnd* pParentWnd, UINT nID,
CCreateContext* pContext = NULL)
{ return CreateControl(GetClsid(), lpszWindowName, dwStyle, rect, pParentWnd, nID); }
BOOL Create(LPCTSTR lpszWindowName, DWORD dwStyle,
const RECT& rect, CWnd* pParentWnd, UINT nID,
CFile* pPersist = NULL, BOOL bStorage = FALSE,
BSTR bstrLicKey = NULL)
{ return CreateControl(GetClsid(), lpszWindowName, dwStyle, rect, pParentWnd, nID,
pPersist, bStorage, bstrLicKey); }
// Attributes
public:
BOOL GetShowHideAllSections();
void SetShowHideAllSections(BOOL);
CString GetCurrentProfileName();
void SetCurrentProfileName(LPCTSTR);
CString GetCurrentClass();
void SetCurrentClass(LPCTSTR);
CString GetCurrentSection();
void SetCurrentSection(LPCTSTR);
long GetCaptionClass();
void SetCaptionClass(long);
long GetCaptionTyp();
void SetCaptionTyp(long);
long GetCaptionShowHideAllSections();
void SetCaptionShowHideAllSections(long);
BOOL GetUseFilterClass();
void SetUseFilterClass(BOOL);
BOOL GetCheckBoxOnLeft();
void SetCheckBoxOnLeft(BOOL);
BOOL GetShowPromptOnTop();
void SetShowPromptOnTop(BOOL);
long GetLabelLength();
void SetLabelLength(long);
CString GetCurrentCrossSection();
void SetCurrentCrossSection(LPCTSTR);
BOOL GetSummaryRepresentation();
void SetSummaryRepresentation(BOOL);
BOOL GetAppearance();
void SetAppearance(BOOL);
long GetDropHeight();
void SetDropHeight(long);
long GetDropWidth();
void SetDropWidth(long);
BOOL GetSummaryDroppedDown();
void SetSummaryDroppedDown(BOOL);
BOOL GetEnabled();
void SetEnabled(BOOL);
// Operations
public:
void AppendAcceptedClass(LPCTSTR newAcceptedClass);
void RemoveAcceptedClass(LPCTSTR AcceptedClass);
void AppendAcceptedClassGroup(LPCTSTR SubtypeName);
void RemoveAcceptedClassGroup(LPCTSTR SubtypeName);
void Reset();
};
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_ASTPROFILECONTROL_H__AB9EFEEC_B473_4CD6_BED1_C5923EA79B15__INCLUDED_)
@@ -0,0 +1,43 @@
// Machine generated IDispatch wrapper class(es) created by Microsoft Visual C++
// NOTE: Do not modify the contents of this file. If this class is regenerated by
// Microsoft Visual C++, your modifications will be overwritten.
#include "pch.h"
#include "aststaticprompt.h"
/////////////////////////////////////////////////////////////////////////////
// CAstStaticPrompt
IMPLEMENT_DYNCREATE(CAstStaticPrompt, CWnd)
/////////////////////////////////////////////////////////////////////////////
// CAstStaticPrompt properties
long CAstStaticPrompt::GetKey()
{
long result;
GetProperty(0x1, VT_I4, (void*)&result);
return result;
}
void CAstStaticPrompt::SetKey(long propVal)
{
SetProperty(0x1, VT_I4, propVal);
}
BOOL CAstStaticPrompt::GetEnabled()
{
BOOL result;
GetProperty(DISPID_ENABLED, VT_BOOL, (void*)&result);
return result;
}
void CAstStaticPrompt::SetEnabled(BOOL propVal)
{
SetProperty(DISPID_ENABLED, VT_BOOL, propVal);
}
/////////////////////////////////////////////////////////////////////////////
// CAstStaticPrompt operations
@@ -0,0 +1,53 @@
#if !defined(AFX_ASTSTATICPROMPT_H__02DA9F43_CBBF_49F9_8E53_3B82F1251DA3__INCLUDED_)
#define AFX_ASTSTATICPROMPT_H__02DA9F43_CBBF_49F9_8E53_3B82F1251DA3__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// Machine generated IDispatch wrapper class(es) created by Microsoft Visual C++
// NOTE: Do not modify the contents of this file. If this class is regenerated by
// Microsoft Visual C++, your modifications will be overwritten.
/////////////////////////////////////////////////////////////////////////////
// CAstStaticPrompt wrapper class
class CAstStaticPrompt : public CWnd
{
protected:
DECLARE_DYNCREATE(CAstStaticPrompt)
public:
CLSID const& GetClsid()
{
static CLSID const clsid
= { 0x25d0c857, 0x2689, 0x481c, { 0xb4, 0x70, 0xa0, 0x62, 0xe5, 0x9, 0x9, 0x58 } };
return clsid;
}
virtual BOOL Create(LPCTSTR lpszClassName,
LPCTSTR lpszWindowName, DWORD dwStyle,
const RECT& rect,
CWnd* pParentWnd, UINT nID,
CCreateContext* pContext = NULL)
{ return CreateControl(GetClsid(), lpszWindowName, dwStyle, rect, pParentWnd, nID); }
BOOL Create(LPCTSTR lpszWindowName, DWORD dwStyle,
const RECT& rect, CWnd* pParentWnd, UINT nID,
CFile* pPersist = NULL, BOOL bStorage = FALSE,
BSTR bstrLicKey = NULL)
{ return CreateControl(GetClsid(), lpszWindowName, dwStyle, rect, pParentWnd, nID,
pPersist, bStorage, bstrLicKey); }
// Attributes
public:
long GetKey();
void SetKey(long);
BOOL GetEnabled();
void SetEnabled(BOOL);
// Operations
public:
};
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_ASTSTATICPROMPT_H__02DA9F43_CBBF_49F9_8E53_3B82F1251DA3__INCLUDED_)
@@ -0,0 +1,19 @@
// Machine generated IDispatch wrapper class(es) created by Microsoft Visual C++
// NOTE: Do not modify the contents of this file. If this class is regenerated by
// Microsoft Visual C++, your modifications will be overwritten.
#include "pch.h"
#include "aststatictextcontrol.h"
/////////////////////////////////////////////////////////////////////////////
// CAstStaticTextControl
IMPLEMENT_DYNCREATE(CAstStaticTextControl, CWnd)
/////////////////////////////////////////////////////////////////////////////
// CAstStaticTextControl properties
/////////////////////////////////////////////////////////////////////////////
// CAstStaticTextControl operations
@@ -0,0 +1,127 @@
#pragma once
// Machine generated IDispatch wrapper class(es) created by Microsoft Visual C++
// NOTE: Do not modify the contents of this file. If this class is regenerated by
// Microsoft Visual C++, your modifications will be overwritten.
/////////////////////////////////////////////////////////////////////////////
// CAstStaticTextControl wrapper class
class CAstStaticTextControl : public CWnd
{
protected:
DECLARE_DYNCREATE(CAstStaticTextControl)
public:
CLSID const& GetClsid()
{
static CLSID const clsid
= { 0x25D0C857, 0x2689, 0x481C, { 0xB4, 0x70, 0xA0, 0x62, 0xE5, 0x9, 0x9, 0x58 } };
return clsid;
}
virtual BOOL Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle,
const RECT& rect, CWnd* pParentWnd, UINT nID,
CCreateContext* pContext = NULL)
{
return CreateControl(GetClsid(), lpszWindowName, dwStyle, rect, pParentWnd, nID);
}
BOOL Create(LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd,
UINT nID, CFile* pPersist = NULL, BOOL bStorage = FALSE,
BSTR bstrLicKey = NULL)
{
return CreateControl(GetClsid(), lpszWindowName, dwStyle, rect, pParentWnd, nID,
pPersist, bStorage, bstrLicKey);
}
// Attributes
public:
enum
{
kEditBox = 0,
kListBox = 1,
kComboBox = 2,
kCheckBox = 3,
kProfileEdit = 4,
kButton = 5
}eColumnType;
enum
{
kUnits = 0,
kDouble = 1,
kInteger = 2,
kString = 3
}eColumnDataType;
enum
{
kUnitDistance = 0,
kUnitAngle = 1,
kUnitWeight = 2,
kUnitDistanceGUI = 3,
kUnitArea = 4,
kUnitVolume = 5,
kUnitForce = 6,
kUnitMoment = 7
}eColumnUnitType;
enum
{
kBeam = 1,
kPlate = 2
}eGroupingRole;
enum
{
kGratingStandard = 0,
kGratingVariable = 1
}eGratingType;
enum
{
kType = 0,
kClass = 1,
kSize = 2
}eGratingControls;
enum
{
kNull = 0,
kAnglePage = 1,
kAreaPage = 2,
kWeightPage = 4,
kLengthPage = 8,
kWeightPerDistancePage = 16,
kAllPages = 255
}eFirstPage;
// Operations
public:
// _DAstStaticPrompt
// Functions
//
// Properties
//
long GetKey()
{
long result;
GetProperty(0x1, VT_I4, (void*)&result);
return result;
}
void SetKey(long propVal)
{
SetProperty(0x1, VT_I4, propVal);
}
BOOL GetEnabled()
{
BOOL result;
GetProperty(DISPID_ENABLED, VT_BOOL, (void*)&result);
return result;
}
void SetEnabled(BOOL propVal)
{
SetProperty(DISPID_ENABLED, VT_BOOL, propVal);
}
};
@@ -0,0 +1,141 @@
// Machine generated IDispatch wrapper class(es) created by Microsoft Visual C++
// NOTE: Do not modify the contents of this file. If this class is regenerated by
// Microsoft Visual C++, your modifications will be overwritten.
#include "pch.h"
#include "astunitcontrol.h"
#include "font.h"
#include "unitsmanager.h"
// Dispatch interfaces referenced by this interface
/////////////////////////////////////////////////////////////////////////////
// CAstUnitControl
IMPLEMENT_DYNCREATE(CAstUnitControl, CWnd)
/////////////////////////////////////////////////////////////////////////////
// CAstUnitControl properties
unsigned long CAstUnitControl::GetBackColor()
{
unsigned long result;
GetProperty(0x1, VT_I4, (void*)&result);
return result;
}
void CAstUnitControl::SetBackColor(unsigned long propVal)
{
SetProperty(0x1, VT_I4, propVal);
}
short CAstUnitControl::GetEditType()
{
short result;
GetProperty(0x2, VT_I2, (void*)&result);
return result;
}
void CAstUnitControl::SetEditType(short propVal)
{
SetProperty(0x2, VT_I2, propVal);
}
COleFont CAstUnitControl::GetFont()
{
LPDISPATCH pDispatch;
GetProperty(DISPID_FONT, VT_DISPATCH, (void*)&pDispatch);
return COleFont(pDispatch);
}
void CAstUnitControl::SetFont(LPDISPATCH propVal)
{
SetProperty(DISPID_FONT, VT_DISPATCH, propVal);
}
double CAstUnitControl::GetDoubleValue()
{
double result;
GetProperty(0x3, VT_R8, (void*)&result);
return result;
}
void CAstUnitControl::SetDoubleValue(double propVal)
{
SetProperty(0x3, VT_R8, propVal);
}
CString CAstUnitControl::GetText()
{
CString result;
GetProperty(0x4, VT_BSTR, (void*)&result);
return result;
}
void CAstUnitControl::SetText(LPCTSTR propVal)
{
SetProperty(0x4, VT_BSTR, propVal);
}
CUnitsManager CAstUnitControl::GetUnits()
{
LPDISPATCH pDispatch;
GetProperty(0x5, VT_DISPATCH, (void*)&pDispatch);
return CUnitsManager(pDispatch);
}
void CAstUnitControl::SetUnits(LPDISPATCH propVal)
{
SetProperty(0x5, VT_DISPATCH, propVal);
}
long CAstUnitControl::GetLabelDbKey()
{
long result;
GetProperty(0x6, VT_I4, (void*)&result);
return result;
}
void CAstUnitControl::SetLabelDbKey(long propVal)
{
SetProperty(0x6, VT_I4, propVal);
}
long CAstUnitControl::GetLabelLength()
{
long result;
GetProperty(0x7, VT_I4, (void*)&result);
return result;
}
void CAstUnitControl::SetLabelLength(long propVal)
{
SetProperty(0x7, VT_I4, propVal);
}
BOOL CAstUnitControl::GetEnabled()
{
BOOL result;
GetProperty(DISPID_ENABLED, VT_BOOL, (void*)&result);
return result;
}
void CAstUnitControl::SetEnabled(BOOL propVal)
{
SetProperty(DISPID_ENABLED, VT_BOOL, propVal);
}
long CAstUnitControl::GetIntegerValue()
{
long result;
GetProperty(0x8, VT_I4, (void*)&result);
return result;
}
void CAstUnitControl::SetIntegerValue(long propVal)
{
SetProperty(0x8, VT_I4, propVal);
}
/////////////////////////////////////////////////////////////////////////////
// CAstUnitControl operations
@@ -0,0 +1,74 @@
#if !defined(AFX_ASTUNITCONTROL_H__75321BD4_00D6_4705_ABA1_52BD1CE5C48C__INCLUDED_)
#define AFX_ASTUNITCONTROL_H__75321BD4_00D6_4705_ABA1_52BD1CE5C48C__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// Machine generated IDispatch wrapper class(es) created by Microsoft Visual C++
// NOTE: Do not modify the contents of this file. If this class is regenerated by
// Microsoft Visual C++, your modifications will be overwritten.
// Dispatch interfaces referenced by this interface
class COleFont;
class CUnitsManager;
/////////////////////////////////////////////////////////////////////////////
// CAstUnitControl wrapper class
class CAstUnitControl : public CWnd
{
protected:
DECLARE_DYNCREATE(CAstUnitControl)
public:
CLSID const& GetClsid()
{
static CLSID const clsid
= { 0x3a345bcb, 0xe386, 0x45de, { 0xa4, 0x25, 0xf4, 0x51, 0xc6, 0x6e, 0x18, 0x47 } };
return clsid;
}
virtual BOOL Create(LPCTSTR lpszClassName,
LPCTSTR lpszWindowName, DWORD dwStyle,
const RECT& rect,
CWnd* pParentWnd, UINT nID,
CCreateContext* pContext = NULL)
{ return CreateControl(GetClsid(), lpszWindowName, dwStyle, rect, pParentWnd, nID); }
BOOL Create(LPCTSTR lpszWindowName, DWORD dwStyle,
const RECT& rect, CWnd* pParentWnd, UINT nID,
CFile* pPersist = NULL, BOOL bStorage = FALSE,
BSTR bstrLicKey = NULL)
{ return CreateControl(GetClsid(), lpszWindowName, dwStyle, rect, pParentWnd, nID,
pPersist, bStorage, bstrLicKey); }
// Attributes
public:
unsigned long GetBackColor();
void SetBackColor(unsigned long);
short GetEditType();
void SetEditType(short);
COleFont GetFont();
void SetFont(LPDISPATCH);
double GetDoubleValue();
void SetDoubleValue(double);
CString GetText();
void SetText(LPCTSTR);
CUnitsManager GetUnits();
void SetUnits(LPDISPATCH);
long GetLabelDbKey();
void SetLabelDbKey(long);
long GetLabelLength();
void SetLabelLength(long);
BOOL GetEnabled();
void SetEnabled(BOOL);
long GetIntegerValue();
void SetIntegerValue(long);
// Operations
public:
};
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_ASTUNITCONTROL_H__75321BD4_00D6_4705_ABA1_52BD1CE5C48C__INCLUDED_)
@@ -0,0 +1,19 @@
// Machine generated IDispatch wrapper class(es) created by Microsoft Visual C++
// NOTE: Do not modify the contents of this file. If this class is regenerated by
// Microsoft Visual C++, your modifications will be overwritten.
#include "pch.h"
#include "astweldcontrol.h"
/////////////////////////////////////////////////////////////////////////////
// CAstWeldControl
IMPLEMENT_DYNCREATE(CAstWeldControl, CWnd)
/////////////////////////////////////////////////////////////////////////////
// CAstWeldControl properties
/////////////////////////////////////////////////////////////////////////////
// CAstWeldControl operations
@@ -0,0 +1,143 @@
#pragma once
// Machine generated IDispatch wrapper class(es) created by Microsoft Visual C++
// NOTE: Do not modify the contents of this file. If this class is regenerated by
// Microsoft Visual C++, your modifications will be overwritten.
/////////////////////////////////////////////////////////////////////////////
// CAstWeldControl wrapper class
class CAstWeldControl : public CWnd
{
protected:
DECLARE_DYNCREATE(CAstWeldControl)
public:
CLSID const& GetClsid()
{
static CLSID const clsid
= { 0xC90B8331, 0x9DA7, 0x41DD, { 0x8D, 0x66, 0x1E, 0xA9, 0x45, 0xC3, 0x36, 0x21 } };
return clsid;
}
virtual BOOL Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle,
const RECT& rect, CWnd* pParentWnd, UINT nID,
CCreateContext* pContext = NULL)
{
return CreateControl(GetClsid(), lpszWindowName, dwStyle, rect, pParentWnd, nID);
}
BOOL Create(LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd,
UINT nID, CFile* pPersist = NULL, BOOL bStorage = FALSE,
BSTR bstrLicKey = NULL)
{
return CreateControl(GetClsid(), lpszWindowName, dwStyle, rect, pParentWnd, nID,
pPersist, bStorage, bstrLicKey);
}
// Attributes
public:
enum
{
kEditBox = 0,
kListBox = 1,
kComboBox = 2,
kCheckBox = 3,
kProfileEdit = 4,
kButton = 5
}eColumnType;
enum
{
kUnits = 0,
kDouble = 1,
kInteger = 2,
kString = 3
}eColumnDataType;
enum
{
kUnitDistance = 0,
kUnitAngle = 1,
kUnitWeight = 2,
kUnitDistanceGUI = 3,
kUnitArea = 4,
kUnitVolume = 5,
kUnitForce = 6,
kUnitMoment = 7
}eColumnUnitType;
enum
{
kBeam = 1,
kPlate = 2
}eGroupingRole;
enum
{
kNull = 0,
kAnglePage = 1,
kAreaPage = 2,
kWeightPage = 4,
kLengthPage = 8,
kWeightPerDistancePage = 16,
kAllPages = 255
}eFirstPage;
// Operations
public:
// _DAstWeldControl
// Functions
//
void SelectItemByKey(long Key)
{
static BYTE parms[] = VTS_I4 ;
InvokeHelper(0x2, DISPATCH_METHOD, VT_EMPTY, NULL, parms, Key);
}
long getSelectedItemKey()
{
long result;
InvokeHelper(0x3, DISPATCH_METHOD, VT_I4, (void*)&result, NULL);
return result;
}
BOOL IsCombiWelding()
{
BOOL result;
InvokeHelper(0x4, DISPATCH_METHOD, VT_BOOL, (void*)&result, NULL);
return result;
}
// Properties
//
long GetLabelDbKey()
{
long result;
GetProperty(0x5, VT_I4, (void*)&result);
return result;
}
void SetLabelDbKey(long propVal)
{
SetProperty(0x5, VT_I4, propVal);
}
long GetLabelLength()
{
long result;
GetProperty(0x6, VT_I4, (void*)&result);
return result;
}
void SetLabelLength(long propVal)
{
SetProperty(0x6, VT_I4, propVal);
}
BOOL GetEnabled()
{
BOOL result;
GetProperty(DISPID_ENABLED, VT_BOOL, (void*)&result);
return result;
}
void SetEnabled(BOOL propVal)
{
SetProperty(DISPID_ENABLED, VT_BOOL, propVal);
}
};
@@ -0,0 +1,19 @@
// Machine generated IDispatch wrapper class(es) created by Microsoft Visual C++
// NOTE: Do not modify the contents of this file. If this class is regenerated by
// Microsoft Visual C++, your modifications will be overwritten.
#include "pch.h"
#include "boltstandards.h"
/////////////////////////////////////////////////////////////////////////////
// CBoltstandardsctrl1
IMPLEMENT_DYNCREATE(CBoltStandards, CWnd)
/////////////////////////////////////////////////////////////////////////////
// CBoltstandardsctrl1 properties
/////////////////////////////////////////////////////////////////////////////
// CBoltstandardsctrl1 operations
@@ -0,0 +1,311 @@
#pragma once
// Machine generated IDispatch wrapper class(es) created by Microsoft Visual C++
// NOTE: Do not modify the contents of this file. If this class is regenerated by
// Microsoft Visual C++, your modifications will be overwritten.
/////////////////////////////////////////////////////////////////////////////
// CBoltstandardsctrl1 wrapper class
#include "unitsmanager.h"
class CBoltStandards : public CWnd
{
protected:
DECLARE_DYNCREATE(CBoltStandards)
public:
CLSID const& GetClsid()
{
static CLSID const clsid
= { 0xC4B9CAC, 0xB571, 0x4906, { 0xB0, 0x6, 0x6, 0xFC, 0x98, 0x47, 0x37, 0x34 } };
return clsid;
}
virtual BOOL Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle,
const RECT& rect, CWnd* pParentWnd, UINT nID,
CCreateContext* pContext = NULL)
{
return CreateControl(GetClsid(), lpszWindowName, dwStyle, rect, pParentWnd, nID);
}
BOOL Create(LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd,
UINT nID, CFile* pPersist = NULL, BOOL bStorage = FALSE,
BSTR bstrLicKey = NULL)
{
return CreateControl(GetClsid(), lpszWindowName, dwStyle, rect, pParentWnd, nID,
pPersist, bStorage, bstrLicKey);
}
// Attributes
public:
enum
{
kEditBox = 0,
kListBox = 1,
kComboBox = 2,
kCheckBox = 3,
kProfileEdit = 4,
kButton = 5
}ColumnType;
enum
{
kUnits = 0,
kDouble = 1,
kInteger = 2,
kString = 3
}ColumnDataType;
enum
{
kUnitDistance = 0,
kUnitAngle = 1,
kUnitWeight = 2,
kUnitDistanceGUI = 3,
kUnitArea = 4,
kUnitVolume = 5,
kUnitForce = 6,
kUnitMoment = 7
}ColumnUnitType;
enum
{
kBeam = 1,
kPlate = 2
}GroupingRole;
enum
{
kGratingStandard = 0,
kGratingVariable = 1
}GratingType;
enum
{
kType = 0,
kClass = 1,
kSize = 2
}GratingControls;
enum
{
kNull = 0,
kAnglePage = 1,
kAreaPage = 2,
kWeightPage = 4,
kLengthPage = 8,
kWeightPerDistancePage = 16,
kAllPages = 255
}FirstPage;
// Operations
public:
// _DBoltStandards
// Functions
//
// Properties
//
float GetLabelLength()
{
float result;
GetProperty(0x1, VT_R4, (void*)&result);
return result;
}
void SetLabelLength(float propVal)
{
SetProperty(0x1, VT_R4, propVal);
}
long GetLabelDiameter()
{
long result;
GetProperty(0x2, VT_I4, (void*)&result);
return result;
}
void SetLabelDiameter(long propVal)
{
SetProperty(0x2, VT_I4, propVal);
}
long GetLabelStandard()
{
long result;
GetProperty(0x3, VT_I4, (void*)&result);
return result;
}
void SetLabelStandard(long propVal)
{
SetProperty(0x3, VT_I4, propVal);
}
long GetLabelMaterial()
{
long result;
GetProperty(0x4, VT_I4, (void*)&result);
return result;
}
void SetLabelMaterial(long propVal)
{
SetProperty(0x4, VT_I4, propVal);
}
long GetLabelBoltSet()
{
long result;
GetProperty(0x5, VT_I4, (void*)&result);
return result;
}
void SetLabelBoltSet(long propVal)
{
SetProperty(0x5, VT_I4, propVal);
}
double GetBoltDiameter()
{
double result;
GetProperty(0x6, VT_R8, (void*)&result);
return result;
}
void SetBoltDiameter(double propVal)
{
SetProperty(0x6, VT_R8, propVal);
}
CString GetBoltStandard()
{
CString result;
GetProperty(0x7, VT_BSTR, (void*)&result);
return result;
}
void SetBoltStandard(CString propVal)
{
SetProperty(0x7, VT_BSTR, propVal);
}
CString GetBoltMaterial()
{
CString result;
GetProperty(0x8, VT_BSTR, (void*)&result);
return result;
}
void SetBoltMaterial(CString propVal)
{
SetProperty(0x8, VT_BSTR, propVal);
}
CString GetBoltSet()
{
CString result;
GetProperty(0x9, VT_BSTR, (void*)&result);
return result;
}
void SetBoltSet(CString propVal)
{
SetProperty(0x9, VT_BSTR, propVal);
}
short GetElementType()
{
short result;
GetProperty(0xa, VT_I2, (void*)&result);
return result;
}
void SetElementType(short propVal)
{
SetProperty(0xa, VT_I2, propVal);
}
CString GetBoltStandardDescription()
{
CString result;
GetProperty(0xb, VT_BSTR, (void*)&result);
return result;
}
void SetBoltStandardDescription(CString propVal)
{
SetProperty(0xb, VT_BSTR, propVal);
}
CString GetBoltMaterialDescription()
{
CString result;
GetProperty(0xc, VT_BSTR, (void*)&result);
return result;
}
void SetBoltMaterialDescription(CString propVal)
{
SetProperty(0xc, VT_BSTR, propVal);
}
CString GetBoltSetDescription()
{
CString result;
GetProperty(0xd, VT_BSTR, (void*)&result);
return result;
}
void SetBoltSetDescription(CString propVal)
{
SetProperty(0xd, VT_BSTR, propVal);
}
CString GetBoltDiameterDescription()
{
CString result;
GetProperty(0xe, VT_BSTR, (void*)&result);
return result;
}
void SetBoltDiameterDescription(CString propVal)
{
SetProperty(0xe, VT_BSTR, propVal);
}
double GetAnchorLength()
{
double result;
GetProperty(0xf, VT_R8, (void*)&result);
return result;
}
void SetAnchorLength(double propVal)
{
SetProperty(0xf, VT_R8, propVal);
}
long GetLabelAnchorLength()
{
long result;
GetProperty(0x10, VT_I4, (void*)&result);
return result;
}
void SetLabelAnchorLength(long propVal)
{
SetProperty(0x10, VT_I4, propVal);
}
CUnitsManager GetUnits()
{
LPDISPATCH pDispatch;
GetProperty(0x11, VT_DISPATCH, (void*)&pDispatch);
return CUnitsManager(pDispatch);
}
void SetUnits(LPDISPATCH propVal)
{
SetProperty(0x11, VT_DISPATCH, propVal);
}
int GetControlHeight()
{
int result;
GetProperty(0x12, VT_I4, (void*)&result);
return result;
}
void SetControlHeight(int propVal)
{
SetProperty(0x12, VT_I4, propVal);
}
BOOL GetEnabled()
{
BOOL result;
GetProperty(DISPID_ENABLED, VT_BOOL, (void*)&result);
return result;
}
void SetEnabled(BOOL propVal)
{
SetProperty(DISPID_ENABLED, VT_BOOL, propVal);
}
IFontDisp * GetFont()
{
IFontDisp * result;
GetProperty(DISPID_FONT, VT_DISPATCH, (void*)&result);
return result;
}
void SetFont(IFontDisp * propVal)
{
SetProperty(DISPID_FONT, VT_DISPATCH, propVal);
}
};
@@ -0,0 +1,111 @@
// Machine generated IDispatch wrapper class(es) created by Microsoft Visual C++
// NOTE: Do not modify the contents of this file. If this class is regenerated by
// Microsoft Visual C++, your modifications will be overwritten.
#include "pch.h"
#include "font.h"
/////////////////////////////////////////////////////////////////////////////
// COleFont properties
CString COleFont::GetName()
{
CString result;
GetProperty(0x0, VT_BSTR, (void*)&result);
return result;
}
void COleFont::SetName(LPCTSTR propVal)
{
SetProperty(0x0, VT_BSTR, propVal);
}
CY COleFont::GetSize()
{
CY result;
GetProperty(0x2, VT_CY, (void*)&result);
return result;
}
void COleFont::SetSize(const CY& propVal)
{
SetProperty(0x2, VT_CY, &propVal);
}
BOOL COleFont::GetBold()
{
BOOL result;
GetProperty(0x3, VT_BOOL, (void*)&result);
return result;
}
void COleFont::SetBold(BOOL propVal)
{
SetProperty(0x3, VT_BOOL, propVal);
}
BOOL COleFont::GetItalic()
{
BOOL result;
GetProperty(0x4, VT_BOOL, (void*)&result);
return result;
}
void COleFont::SetItalic(BOOL propVal)
{
SetProperty(0x4, VT_BOOL, propVal);
}
BOOL COleFont::GetUnderline()
{
BOOL result;
GetProperty(0x5, VT_BOOL, (void*)&result);
return result;
}
void COleFont::SetUnderline(BOOL propVal)
{
SetProperty(0x5, VT_BOOL, propVal);
}
BOOL COleFont::GetStrikethrough()
{
BOOL result;
GetProperty(0x6, VT_BOOL, (void*)&result);
return result;
}
void COleFont::SetStrikethrough(BOOL propVal)
{
SetProperty(0x6, VT_BOOL, propVal);
}
short COleFont::GetWeight()
{
short result;
GetProperty(0x7, VT_I2, (void*)&result);
return result;
}
void COleFont::SetWeight(short propVal)
{
SetProperty(0x7, VT_I2, propVal);
}
short COleFont::GetCharset()
{
short result;
GetProperty(0x8, VT_I2, (void*)&result);
return result;
}
void COleFont::SetCharset(short propVal)
{
SetProperty(0x8, VT_I2, propVal);
}
/////////////////////////////////////////////////////////////////////////////
// COleFont operations
@@ -0,0 +1,47 @@
#if !defined(AFX_FONT_H__454B029E_2DFA_40AD_A69C_4666F95D7E40__INCLUDED_)
#define AFX_FONT_H__454B029E_2DFA_40AD_A69C_4666F95D7E40__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// Machine generated IDispatch wrapper class(es) created by Microsoft Visual C++
// NOTE: Do not modify the contents of this file. If this class is regenerated by
// Microsoft Visual C++, your modifications will be overwritten.
/////////////////////////////////////////////////////////////////////////////
// COleFont wrapper class
class COleFont : public COleDispatchDriver
{
public:
COleFont() {} // Calls COleDispatchDriver default constructor
COleFont(LPDISPATCH pDispatch) : COleDispatchDriver(pDispatch) {}
COleFont(const COleFont& dispatchSrc) : COleDispatchDriver(dispatchSrc) {}
// Attributes
public:
CString GetName();
void SetName(LPCTSTR);
CY GetSize();
void SetSize(const CY&);
BOOL GetBold();
void SetBold(BOOL);
BOOL GetItalic();
void SetItalic(BOOL);
BOOL GetUnderline();
void SetUnderline(BOOL);
BOOL GetStrikethrough();
void SetStrikethrough(BOOL);
short GetWeight();
void SetWeight(short);
short GetCharset();
void SetCharset(short);
// Operations
public:
};
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_FONT_H__454B029E_2DFA_40AD_A69C_4666F95D7E40__INCLUDED_)
@@ -0,0 +1,5 @@
#pragma once
#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers
// Windows Header Files
#include <windows.h>
@@ -0,0 +1,5 @@
// pch.cpp: source file corresponding to the pre-compiled header
#include "pch.h"
// When you are using pre-compiled headers, this source file is necessary for compilation to succeed.
@@ -0,0 +1,38 @@
// pch.h: This is a precompiled header file.
// Files listed below are compiled only once, improving build performance for future builds.
// This also affects IntelliSense performance, including code completion and many code browsing features.
// However, files listed here are ALL re-compiled if any one of them is updated between builds.
// Do not add files here that you will be updating frequently as this negates the performance advantage.
#ifndef PCH_H
#define PCH_H
// add headers that you want to pre-compile here
#include <afxwin.h>
#include <afxdisp.h>
#include <afxdlgs.h>
#include <afxcmn.h>
#include <atlbase.h>
//You may derive a class from CComModule and use it if you want to override
//something, but do not change the name of _Module
extern CComModule _Module;
#include <atlcom.h>
#include <comdef.h>
#include <vector>
#include <math.h>
#include <string>
#import "AstorMain5.tlb" raw_interfaces_only, raw_native_types, no_namespace, named_guids
#import "DscOdbcCom.tlb" raw_interfaces_only, raw_native_types, no_namespace, named_guids
#include "resource.h"
#include "SampleClipAngleNative_h.h"
#include "ClipAngle.h"
#include "framework.h"
#endif //PCH_H
@@ -0,0 +1,20 @@
//{{NO_DEPENDENCIES}}
// Microsoft Visual C++ generated include file.
// Used by SampleClipAngle.rc
//
#define IDD_CLIPANGLEDIALOG 103
#define IDR_SampleClipAngle 1000
#define IDC_ASTBITMAPCONTROL1 1001
#define IDC_BOLTSTANDARDSCTRL1 1002
#define IDC_ASTPROFILECONTROL1 1003
// Next default values for new objects
//
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 103
#define _APS_NEXT_COMMAND_VALUE 40001
#define _APS_NEXT_CONTROL_VALUE 1004
#define _APS_NEXT_SYMED_VALUE 101
#endif
#endif
@@ -0,0 +1,235 @@
// Machine generated IDispatch wrapper class(es) created by Microsoft Visual C++
// NOTE: Do not modify the contents of this file. If this class is regenerated by
// Microsoft Visual C++, your modifications will be overwritten.
#include "pch.h"
#include "unitsmanager.h"
/////////////////////////////////////////////////////////////////////////////
// CUnitsManager properties
/////////////////////////////////////////////////////////////////////////////
// CUnitsManager operations
void CUnitsManager::SetUseRegionalSettings(long nNewValue)
{
static BYTE parms[] =
VTS_I4;
InvokeHelper(0x1, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms,
nNewValue);
}
long CUnitsManager::GetUseRegionalSettings()
{
long result;
InvokeHelper(0x1, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, NULL);
return result;
}
void CUnitsManager::getUnitOfDistance(LPDISPATCH retval)
{
static BYTE parms[] =
VTS_DISPATCH;
InvokeHelper(0x2, DISPATCH_METHOD, VT_EMPTY, NULL, parms,
retval);
}
void CUnitsManager::setUnitOfDistance(LPDISPATCH retval)
{
static BYTE parms[] =
VTS_DISPATCH;
InvokeHelper(0x3, DISPATCH_METHOD, VT_EMPTY, NULL, parms,
retval);
}
void CUnitsManager::getUnitOfWeight(LPDISPATCH retval)
{
static BYTE parms[] =
VTS_DISPATCH;
InvokeHelper(0x4, DISPATCH_METHOD, VT_EMPTY, NULL, parms,
retval);
}
void CUnitsManager::setUnitOfWeight(LPDISPATCH retval)
{
static BYTE parms[] =
VTS_DISPATCH;
InvokeHelper(0x5, DISPATCH_METHOD, VT_EMPTY, NULL, parms,
retval);
}
void CUnitsManager::getUnitOfAngle(LPDISPATCH retval)
{
static BYTE parms[] =
VTS_DISPATCH;
InvokeHelper(0x6, DISPATCH_METHOD, VT_EMPTY, NULL, parms,
retval);
}
void CUnitsManager::setUnitOfAngle(LPDISPATCH retval)
{
static BYTE parms[] =
VTS_DISPATCH;
InvokeHelper(0x7, DISPATCH_METHOD, VT_EMPTY, NULL, parms,
retval);
}
void CUnitsManager::doModal()
{
InvokeHelper(0x8, DISPATCH_METHOD, VT_EMPTY, NULL, NULL);
}
void CUnitsManager::getUnitOfArea(LPDISPATCH retval)
{
static BYTE parms[] =
VTS_DISPATCH;
InvokeHelper(0x9, DISPATCH_METHOD, VT_EMPTY, NULL, parms,
retval);
}
void CUnitsManager::setUnitOfArea(LPDISPATCH retval)
{
static BYTE parms[] =
VTS_DISPATCH;
InvokeHelper(0xa, DISPATCH_METHOD, VT_EMPTY, NULL, parms,
retval);
}
void CUnitsManager::getUnitOfVolume(LPDISPATCH retval)
{
static BYTE parms[] =
VTS_DISPATCH;
InvokeHelper(0xb, DISPATCH_METHOD, VT_EMPTY, NULL, parms,
retval);
}
void CUnitsManager::setUnitOfVolume(LPDISPATCH retval)
{
static BYTE parms[] =
VTS_DISPATCH;
InvokeHelper(0xc, DISPATCH_METHOD, VT_EMPTY, NULL, parms,
retval);
}
void CUnitsManager::getUnitOfDistanceGUI(LPDISPATCH retval)
{
static BYTE parms[] =
VTS_DISPATCH;
InvokeHelper(0xd, DISPATCH_METHOD, VT_EMPTY, NULL, parms,
retval);
}
void CUnitsManager::setUnitOfDistanceGUI(LPDISPATCH retval)
{
static BYTE parms[] =
VTS_DISPATCH;
InvokeHelper(0xe, DISPATCH_METHOD, VT_EMPTY, NULL, parms,
retval);
}
void CUnitsManager::getUnitOfForce(LPDISPATCH retval)
{
static BYTE parms[] =
VTS_DISPATCH;
InvokeHelper(0xf, DISPATCH_METHOD, VT_EMPTY, NULL, parms,
retval);
}
void CUnitsManager::setUnitOfForce(LPDISPATCH retval)
{
static BYTE parms[] =
VTS_DISPATCH;
InvokeHelper(0x10, DISPATCH_METHOD, VT_EMPTY, NULL, parms,
retval);
}
void CUnitsManager::getUnitOfMoment(LPDISPATCH retval)
{
static BYTE parms[] =
VTS_DISPATCH;
InvokeHelper(0x11, DISPATCH_METHOD, VT_EMPTY, NULL, parms,
retval);
}
void CUnitsManager::setUnitOfMoment(LPDISPATCH retval)
{
static BYTE parms[] =
VTS_DISPATCH;
InvokeHelper(0x12, DISPATCH_METHOD, VT_EMPTY, NULL, parms,
retval);
}
void CUnitsManager::getUnitOfWeightPerDistance(LPDISPATCH retval)
{
static BYTE parms[] =
VTS_DISPATCH;
InvokeHelper(0x13, DISPATCH_METHOD, VT_EMPTY, NULL, parms,
retval);
}
void CUnitsManager::setUnitOfWeightPerDistance(LPDISPATCH retval)
{
static BYTE parms[] =
VTS_DISPATCH;
InvokeHelper(0x14, DISPATCH_METHOD, VT_EMPTY, NULL, parms,
retval);
}
void CUnitsManager::getUnitOfAreaPerDistance(LPDISPATCH retval)
{
static BYTE parms[] =
VTS_DISPATCH;
InvokeHelper(0x15, DISPATCH_METHOD, VT_EMPTY, NULL, parms,
retval);
}
void CUnitsManager::setUnitOfAreaPerDistance(LPDISPATCH retval)
{
static BYTE parms[] =
VTS_DISPATCH;
InvokeHelper(0x16, DISPATCH_METHOD, VT_EMPTY, NULL, parms,
retval);
}
void CUnitsManager::doModalWithCaption(LPCTSTR caption)
{
static BYTE parms[] =
VTS_BSTR;
InvokeHelper(0x17, DISPATCH_METHOD, VT_EMPTY, NULL, parms,
caption);
}
void CUnitsManager::doModalWithChooseFirstPage(long firstPageNo)
{
static BYTE parms[] =
VTS_I4;
InvokeHelper(0x18, DISPATCH_METHOD, VT_EMPTY, NULL, parms,
firstPageNo);
}
void CUnitsManager::doModalUnitPage(long pageNo)
{
static BYTE parms[] =
VTS_I4;
InvokeHelper(0x19, DISPATCH_METHOD, VT_EMPTY, NULL, parms,
pageNo);
}
void CUnitsManager::doModalUnitPages(long pagesSelection, long page)
{
static BYTE parms[] =
VTS_I4 VTS_I4;
InvokeHelper(0x1a, DISPATCH_METHOD, VT_EMPTY, NULL, parms,
pagesSelection, page);
}
void CUnitsManager::doModalWithCaptionUnitPages(LPCTSTR caption, long pagesSelection, long page)
{
static BYTE parms[] =
VTS_BSTR VTS_I4 VTS_I4;
InvokeHelper(0x1b, DISPATCH_METHOD, VT_EMPTY, NULL, parms,
caption, pagesSelection, page);
}
@@ -0,0 +1,59 @@
#if !defined(AFX_UNITSMANAGER_H__CEBB4162_730D_40CD_8126_AD9245ED4795__INCLUDED_)
#define AFX_UNITSMANAGER_H__CEBB4162_730D_40CD_8126_AD9245ED4795__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// Machine generated IDispatch wrapper class(es) created by Microsoft Visual C++
// NOTE: Do not modify the contents of this file. If this class is regenerated by
// Microsoft Visual C++, your modifications will be overwritten.
/////////////////////////////////////////////////////////////////////////////
// CUnitsManager wrapper class
class CUnitsManager : public COleDispatchDriver
{
public:
CUnitsManager() {} // Calls COleDispatchDriver default constructor
CUnitsManager(LPDISPATCH pDispatch) : COleDispatchDriver(pDispatch) {}
CUnitsManager(const CUnitsManager& dispatchSrc) : COleDispatchDriver(dispatchSrc) {}
// Attributes
public:
// Operations
public:
void SetUseRegionalSettings(long nNewValue);
long GetUseRegionalSettings();
void getUnitOfDistance(LPDISPATCH retval);
void setUnitOfDistance(LPDISPATCH retval);
void getUnitOfWeight(LPDISPATCH retval);
void setUnitOfWeight(LPDISPATCH retval);
void getUnitOfAngle(LPDISPATCH retval);
void setUnitOfAngle(LPDISPATCH retval);
void doModal();
void getUnitOfArea(LPDISPATCH retval);
void setUnitOfArea(LPDISPATCH retval);
void getUnitOfVolume(LPDISPATCH retval);
void setUnitOfVolume(LPDISPATCH retval);
void getUnitOfDistanceGUI(LPDISPATCH retval);
void setUnitOfDistanceGUI(LPDISPATCH retval);
void getUnitOfForce(LPDISPATCH retval);
void setUnitOfForce(LPDISPATCH retval);
void getUnitOfMoment(LPDISPATCH retval);
void setUnitOfMoment(LPDISPATCH retval);
void getUnitOfWeightPerDistance(LPDISPATCH retval);
void setUnitOfWeightPerDistance(LPDISPATCH retval);
void getUnitOfAreaPerDistance(LPDISPATCH retval);
void setUnitOfAreaPerDistance(LPDISPATCH retval);
void doModalWithCaption(LPCTSTR caption);
void doModalWithChooseFirstPage(long firstPageNo);
void doModalUnitPage(long pageNo);
void doModalUnitPages(long pagesSelection, long page);
void doModalWithCaptionUnitPages(LPCTSTR caption, long pagesSelection, long page);
};
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_UNITSMANAGER_H__CEBB4162_730D_40CD_8126_AD9245ED4795__INCLUDED_)
@@ -0,0 +1,321 @@
//
//////////////////////////////////////////////////////////////////////////////
//
// Copyright 2015 Autodesk, Inc. All rights reserved.
//
// Use of this software is subject to the terms of the Autodesk license
// agreement provided at the time of installation or download, or which
// otherwise accompanies this software in either electronic or hard copy form.
//
//////////////////////////////////////////////////////////////////////////////
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Runtime.InteropServices;
using AstSTEELAUTOMATIONLib;
using JointDesignUtils;
namespace SampleDesign
{
[ComVisible(true)]
[Guid("C64ECF63-D01C-451F-B0E0-E3F85DFAC05E")]
public class CreatePlateDesign : INodeStressAppModule
{
#region Private_Members
private StressModuleJoint m_joint;
private Torsors m_pTorsorsPage;
private SimpleTorsors m_SimpleTorsorsPage;
private Settings m_SettingsPage;
#endregion
#region Standard_Methods
public eJointStatus CheckJoint()
{
eJointStatus ret = eJointStatus.JointSupported;
//report format
int nReportFormat = (int)getJointNSAModuleSpecificData(m_joint, this, "ReportFormat", 0);
//get efforts
List<double> dM, dN, dV;
List<string> sCaseName;
getEfforts(m_joint, m_joint.GetJointNSAModuleLoadingCases(this), m_joint.UseDetailedTorsors, out dM, out dN, out dV, out sCaseName);
//read some values from joint
bool bModifiable = false;
double dPlateThickness = (double)m_joint.GetJointParam("PlateThickness", ref bModifiable);
double dPlateLength = (double)m_joint.GetJointParam("PlateLength", ref bModifiable);
double dPlateWidth = (double)m_joint.GetJointParam("PlateWidth", ref bModifiable);
return ret;
}
public bool DesignEngineAvailable()
{
return true;
}
public eJointStatus ExportJoint()
{
return eJointStatus.JointUnknownStatus;
}
public void FreeUserPages()
{
if (m_pTorsorsPage != null)
{
m_pTorsorsPage.Dispose();
m_pTorsorsPage = null;
}
if (m_SettingsPage != null)
{
m_SettingsPage.Dispose();
m_SettingsPage = null;
}
}
public void FreeUserTorsorsPage()
{
if (m_SimpleTorsorsPage != null)
{
m_SimpleTorsorsPage.Dispose();
m_SimpleTorsorsPage = null;
}
}
public string GetExportName()
{
return "";
}
public bool GetFeatureName(ref string FeatureName)
{
FeatureName = "JOINT_DESIGN_EC3";
return true;
}
public string GetImportName()
{
return "";
}
public string GetLastReportFilename(bool bQuickReportFilename)
{
if (bQuickReportFilename)
return m_joint.GetModuleOutputFileName(this) + ".txt";
else
return m_joint.GetModuleOutputFileName(this) + ".html";
}
public void GetProcessingModes(out bool bCheckAvailable, out bool bPresizeAvailable, out bool bImportAvailable, out bool bExportAvailable, out bool bUseLoadCasesAvailable)
{
bCheckAvailable = true;
bPresizeAvailable = false;
bImportAvailable = false;
bExportAvailable = false;
bUseLoadCasesAvailable = true;
}
public void GetUserPages(RulePageArray pagesRet, PropertySheetData pPropSheetData)
{
m_pTorsorsPage = new Torsors();
m_pTorsorsPage.setJoint(this);
RulePage pgTorsors = m_joint.CreateRulePage();
pgTorsors.title = 88136;
pgTorsors.hWnd = (int)m_pTorsorsPage.Handle;
pagesRet.Add(pgTorsors);
}
public void GetUserSettingsPages(RulePageArray pagesSettingsRet, PropertySheetData pPropSheetData)
{
pPropSheetData.SheetPrompt = 88140;
m_SettingsPage = new Settings();
m_SettingsPage.setJoint(this);
RulePage pgSettings = m_joint.CreateRulePage();
pgSettings.title = 88140;
pgSettings.hWnd = (int)m_SettingsPage.Handle;
pagesSettingsRet.Add(pgSettings);
}
public void GetUserTorsorsPage(RulePage pageRet)
{
m_SimpleTorsorsPage = new SimpleTorsors();
m_SimpleTorsorsPage.setJoint(this);
pageRet.hWnd = (int)m_SimpleTorsorsPage.Handle;
}
public eJointStatus ImportJoint()
{
return eJointStatus.JointUnknownStatus;
}
public void InvalidFeature(int reserved)
{
}
public StressModuleJoint Joint
{
get
{
return m_joint;
}
set
{
m_joint = value;
}
}
public string ModuleName
{
get { return "EC3 Design"; }
}
public eJointStatus PresizeJoint()
{
return eJointStatus.JointUnknownStatus;
}
public string Standard
{
get
{
return "Standard";
}
set
{
}
}
#endregion
#region Private_Methods
private object getJointNSAModuleSpecificData(StressModuleJoint pCurJoint, INodeStressAppModule NSAModule, string sKey, object defaultValue)
{
object param = defaultValue;
try
{
param = pCurJoint.GetJointNSAModuleSpecificData(NSAModule, sKey);
}
catch (Exception e)
{
Debug.Write(e.Message);
try
{
pCurJoint.SetJointNSAModuleSpecificData(NSAModule, defaultValue, sKey);
}
catch (Exception ex)
{
Debug.Write(ex.Message);
}
}
return param;
}
private void getEfforts(StressModuleJoint pCurJoint, IJointLoadingCases spJointLoadingCases, bool bUseDetailedTorsors,
out List<double> dfEffM, out List<double> dfEffN, out List<double> dfEffV, out List<string> sCaseName)
{
dfEffM = new List<double>();
dfEffN = new List<double>();
dfEffV = new List<double>();
sCaseName = new List<string>();
//get the efforts from SIMPLE TORSORS
try
{
if (null != spJointLoadingCases && false == bUseDetailedTorsors)
{
if ((int)spJointLoadingCases.Count > 0)
{
for (int i = 0; i < (int)spJointLoadingCases.Count; i++)
{
IJointLoadingCase spJointLoadingCase = spJointLoadingCases[i];
IJointEfforts spJointEfforts = spJointLoadingCase.JointEfforts;
if (null != spJointEfforts && spJointLoadingCase.Name == "SimpleMaxTorsor")
{
if (3 == (int)spJointEfforts.Count)
{
sCaseName.Add(spJointLoadingCase.Name);
dfEffM.Add((double)spJointEfforts[0].Value);
dfEffN.Add((double)spJointEfforts[1].Value);
dfEffV.Add((double)spJointEfforts[2].Value);
}
}
}
}
}
}
catch (Exception e)
{
System.Diagnostics.Debug.Write(e);
}
//get the efforts from DETAILED TORSORS
try
{
char[] splitChars = new char[2];
splitChars[0] = '#';
splitChars[1] = '@';
if (bUseDetailedTorsors)
{
if (null != spJointLoadingCases)
{
if ((int)spJointLoadingCases.Count > 0)
{
for (int i = 0; i < (int)spJointLoadingCases.Count; i++)
{
IJointLoadingCase spJointLoadingCase = spJointLoadingCases[i];
IJointEfforts spJointEfforts = spJointLoadingCase.JointEfforts;
if (null != spJointEfforts && spJointLoadingCase.Name != "SimpleMaxTorsor")
{
if (3 == (int)spJointEfforts.Count)
{
string[] sSplitName = spJointLoadingCase.Name.Split(splitChars);
sCaseName.Add(sSplitName[sSplitName.Length - 1]);
dfEffM.Add((double)spJointEfforts[0].Value);
dfEffN.Add((double)spJointEfforts[1].Value);
dfEffV.Add((double)spJointEfforts[2].Value);
}
}
}
}
}
}
}
catch (Exception e)
{
System.Diagnostics.Debug.Write(e);
}
}
public void InitializeDesignModuleData()
{
if (m_joint == null)
return;
Utils.InitializeEC3JointDesignData(m_joint, this);
}
#endregion
}
}
@@ -0,0 +1,36 @@
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("SampleDesign")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("Autodesk")]
[assembly: AssemblyProduct("SampleDesign")]
[assembly: AssemblyCopyright("Copyright © Autodesk 2015")]
[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("71b9c5c2-f638-42a2-b13b-10bdfac16f7d")]
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
@@ -0,0 +1,141 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="..\StructuralConnectionsSDKSamples.Common.props" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">x64</Platform>
<ProjectGuid>{9CE75523-141E-4F65-8F96-71E2A9C826E2}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>SampleDesign</RootNamespace>
<AssemblyName>SampleDesign</AssemblyName>
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<SccProjectName>SAK</SccProjectName>
<SccLocalPath>SAK</SccLocalPath>
<SccAuxPath>SAK</SccAuxPath>
<SccProvider>SAK</SccProvider>
<TargetFrameworkProfile />
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>..\..\Binaries\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<Prefer32Bit>false</Prefer32Bit>
<PlatformTarget>x64</PlatformTarget>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>..\..\Binaries\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<Prefer32Bit>false</Prefer32Bit>
<PlatformTarget>x64</PlatformTarget>
</PropertyGroup>
<ItemGroup>
<Reference Include="AxInterop.ASTCONTROLSLib">
<SpecificVersion>False</SpecificVersion>
<HintPath>$(ASInstallDir)\AxInterop.ASTCONTROLSLib.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="DotNetRoots">
<HintPath>$(ASInstallDir)\DotNetRoots.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="Interop.ASTCONTROLSLib">
<SpecificVersion>False</SpecificVersion>
<HintPath>$(ASInstallDir)\Interop.ASTCONTROLSLib.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="Interop.AstSTEELAUTOMATIONLib5">
<HintPath>$(ASInstallDir)\Interop.AstSTEELAUTOMATIONLib5.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="Interop.DSCGEOMCOMLib">
<HintPath>$(ASInstallDir)\Interop.DSCGEOMCOMLib.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="Interop.DSCODBCCOMLib">
<HintPath>$(ASInstallDir)\Interop.DSCODBCCOMLib.dll</HintPath>
<EmbedInteropTypes>True</EmbedInteropTypes>
</Reference>
<Reference Include="Interop.DSCRootsCOMLib">
<HintPath>$(ASInstallDir)\Interop.DSCRootsCOMLib.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="DotNetRoots">
<HintPath>$(ASInstallDir)\JointDesignUtils.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="JointDesignUtils">
<HintPath>$(ASInstallDir)\JointDesignUtils.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Drawing" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="CreatePlateDesign.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Settings.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="Settings.Designer.cs">
<DependentUpon>Settings.cs</DependentUpon>
</Compile>
<Compile Include="SimpleTorsors.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="SimpleTorsors.Designer.cs">
<DependentUpon>SimpleTorsors.cs</DependentUpon>
</Compile>
<Compile Include="Torsors.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="Torsors.Designer.cs">
<DependentUpon>Torsors.cs</DependentUpon>
</Compile>
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="Settings.resx">
<DependentUpon>Settings.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="SimpleTorsors.resx">
<DependentUpon>SimpleTorsors.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Torsors.resx">
<DependentUpon>Torsors.cs</DependentUpon>
</EmbeddedResource>
</ItemGroup>
<ItemGroup>
<COMReference Include="stdole">
<Guid>{00020430-0000-0000-C000-000000000046}</Guid>
<VersionMajor>2</VersionMajor>
<VersionMinor>0</VersionMinor>
<Lcid>0</Lcid>
<WrapperTool>primary</WrapperTool>
<Isolated>False</Isolated>
<EmbedInteropTypes>True</EmbedInteropTypes>
</COMReference>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.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>
-->
</Project>
@@ -0,0 +1,91 @@
namespace SampleDesign
{
partial class Settings
{
/// <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 Component 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.gbReport = new System.Windows.Forms.GroupBox();
this.lbReportFormat = new System.Windows.Forms.Label();
this.cbReportFormat = new System.Windows.Forms.ComboBox();
this.gbReport.SuspendLayout();
this.SuspendLayout();
//
// gbReport
//
this.gbReport.Controls.Add(this.lbReportFormat);
this.gbReport.Controls.Add(this.cbReportFormat);
this.gbReport.Location = new System.Drawing.Point(3, 3);
this.gbReport.Name = "gbReport";
this.gbReport.Size = new System.Drawing.Size(325, 58);
this.gbReport.TabIndex = 13;
this.gbReport.TabStop = false;
this.gbReport.Text = "Report";
//
// lbReportFormat
//
this.lbReportFormat.AutoSize = true;
this.lbReportFormat.ImeMode = System.Windows.Forms.ImeMode.NoControl;
this.lbReportFormat.Location = new System.Drawing.Point(2, 17);
this.lbReportFormat.Name = "lbReportFormat";
this.lbReportFormat.Size = new System.Drawing.Size(39, 13);
this.lbReportFormat.TabIndex = 0;
this.lbReportFormat.Text = "Format";
//
// cbReportFormat
//
this.cbReportFormat.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.cbReportFormat.FormattingEnabled = true;
this.cbReportFormat.Items.AddRange(new object[] {
"LRFD",
"ASD"});
this.cbReportFormat.Location = new System.Drawing.Point(196, 17);
this.cbReportFormat.Name = "cbReportFormat";
this.cbReportFormat.Size = new System.Drawing.Size(121, 21);
this.cbReportFormat.TabIndex = 0;
this.cbReportFormat.SelectedIndexChanged += new System.EventHandler(this.cbReportFormat_SelectedIndexChanged);
//
// Settings
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.BackColor = System.Drawing.SystemColors.ControlLightLight;
this.Controls.Add(this.gbReport);
this.Name = "Settings";
this.Size = new System.Drawing.Size(347, 285);
this.gbReport.ResumeLayout(false);
this.gbReport.PerformLayout();
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.GroupBox gbReport;
private System.Windows.Forms.Label lbReportFormat;
private System.Windows.Forms.ComboBox cbReportFormat;
}
}
@@ -0,0 +1,76 @@
//
//////////////////////////////////////////////////////////////////////////////
//
// Copyright 2015 Autodesk, Inc. All rights reserved.
//
// Use of this software is subject to the terms of the Autodesk license
// agreement provided at the time of installation or download, or which
// otherwise accompanies this software in either electronic or hard copy form.
//
//////////////////////////////////////////////////////////////////////////////
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using AstSTEELAUTOMATIONLib;
namespace SampleDesign
{
public partial class Settings : UserControl
{
#region Constructor
public Settings()
{
InitializeComponent();
this.Visible = false;
cbReportFormat.Items.Clear();
cbReportFormat.Items.Add("RTF");
cbReportFormat.Items.Add("HTML");
}
#endregion
#region Private_Members
private INodeStressAppModule m_pCurSMRule;
#endregion
#region Public_Methods
public void setJoint(INodeStressAppModule pVal)
{
m_pCurSMRule = pVal;
int nSelIndex = -1;
try
{
nSelIndex = (int)m_pCurSMRule.Joint.GetJointNSAModuleSpecificData(m_pCurSMRule, "ReportFormat");
}
catch (Exception)
{
m_pCurSMRule.Joint.SetJointNSAModuleSpecificData(m_pCurSMRule, 0, "ReportFormat");
}
if (nSelIndex > -1 && cbReportFormat.Items.Count > nSelIndex)
cbReportFormat.SelectedIndex = nSelIndex;
}
#endregion
#region Private_Methods
private void cbReportFormat_SelectedIndexChanged(object sender, EventArgs e)
{
m_pCurSMRule.Joint.SetJointNSAModuleSpecificData(m_pCurSMRule, this.cbReportFormat.SelectedIndex, "ReportFormat");
}
#endregion
}
}
@@ -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>
@@ -0,0 +1,63 @@
namespace SampleDesign
{
partial class SimpleTorsors
{
/// <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 Component 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()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(SimpleTorsors));
this.axSimpleTorsors = new AxASTCONTROLSLib.AxAstOCXGrid();
((System.ComponentModel.ISupportInitialize)(this.axSimpleTorsors)).BeginInit();
this.SuspendLayout();
//
// axSimpleTorsors
//
this.axSimpleTorsors.Enabled = true;
this.axSimpleTorsors.Location = new System.Drawing.Point(3, 22);
this.axSimpleTorsors.Name = "axSimpleTorsors";
this.axSimpleTorsors.OcxState = ((System.Windows.Forms.AxHost.State)(resources.GetObject("axSimpleTorsors.OcxState")));
this.axSimpleTorsors.Size = new System.Drawing.Size(232, 70);
this.axSimpleTorsors.TabIndex = 4;
this.axSimpleTorsors.OnGridCellEdited += new AxASTCONTROLSLib._DAstOCXGridEvents_OnGridCellEditedEventHandler(this.axSimpleTorsors_OnGridCellEdited);
//
// SimpleTorsors
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.BackColor = System.Drawing.SystemColors.ControlLightLight;
this.Controls.Add(this.axSimpleTorsors);
this.Name = "SimpleTorsors";
this.Size = new System.Drawing.Size(150, 150);
((System.ComponentModel.ISupportInitialize)(this.axSimpleTorsors)).EndInit();
this.ResumeLayout(false);
}
#endregion
private AxASTCONTROLSLib.AxAstOCXGrid axSimpleTorsors;
}
}
@@ -0,0 +1,291 @@
//
//////////////////////////////////////////////////////////////////////////////
//
// Copyright 2015 Autodesk, Inc. All rights reserved.
//
// Use of this software is subject to the terms of the Autodesk license
// agreement provided at the time of installation or download, or which
// otherwise accompanies this software in either electronic or hard copy form.
//
//////////////////////////////////////////////////////////////////////////////
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using AstSTEELAUTOMATIONLib;
using Autodesk.AdvanceSteel.DotNetRoots.DatabaseAccess;
using AxASTCONTROLSLib;
namespace SampleDesign
{
public partial class SimpleTorsors : UserControl
{
#region private members
private CreatePlateDesign m_CreatePlateDesign;
double m_dMaxM;
double m_dMaxN;
double m_dMaxV;
#endregion
#region Constructors
public SimpleTorsors()
{
InitializeComponent();
this.Visible = false;
m_dMaxM = 0;
m_dMaxN = 0;
m_dMaxV = 0;
m_CreatePlateDesign = null;
}
public void setJoint(CreatePlateDesign pVal)
{
m_dMaxM = 0;
m_dMaxN = 0;
m_dMaxV = 0;
m_CreatePlateDesign = pVal;
setJoint(m_CreatePlateDesign, 1);
setEnable(1, m_CreatePlateDesign);
}
#endregion
#region Private_Methods
private void axSimpleTorsors_OnGridCellEdited(object sender, _DAstOCXGridEvents_OnGridCellEditedEvent e)
{
double newM = 0;
double newN = 0;
double newT = 0;
int nRow = axSimpleTorsors.GetFocusCellRow();
newM = axSimpleTorsors.get_ItemDoubleValue(nRow, 0);
newN = axSimpleTorsors.get_ItemDoubleValue(nRow, 1);
newT = axSimpleTorsors.get_ItemDoubleValue(nRow, 2);
if (1 == nRow)
setJointTorsorsValues(m_CreatePlateDesign, newM, newN, newT, "SimpleMaxTorsor");
}
private void setJointTorsorsValues(INodeStressAppModule m_pCurSMRule, double dMaxM, double dMaxN, double dMaxT, string sLoadingCaseName)
{
IStressModuleJoint curSMJoint = m_pCurSMRule.Joint;
bool bFoundLoadingCase = false;
//get now the module loading cases
JointLoadingCases spJointLoadingCases = curSMJoint.GetJointNSAModuleLoadingCases(m_pCurSMRule);
if (null != spJointLoadingCases)
{
for (int i = 0; i < (int)spJointLoadingCases.Count; i++)
{
IJointLoadingCase spJointLoadingCase = spJointLoadingCases[i];
IJointEfforts spJointEfforts = spJointLoadingCase.JointEfforts;
if ((null != spJointEfforts) && (spJointLoadingCase.Name == sLoadingCaseName))
{
if (3 == (int)spJointEfforts.Count)
{
spJointEfforts[0].Value = dMaxM;
spJointEfforts[1].Value = dMaxN;
spJointEfforts[2].Value = dMaxT;
bFoundLoadingCase = true;
}
}
}
//set back joint loading cases
curSMJoint.SetJointNSAModuleLoadingCases(m_pCurSMRule, spJointLoadingCases);
}
if (!bFoundLoadingCase)
{
//create loading case
JointLoadingCase spJointLoadingCase = curSMJoint.CreateJointLoadingCase();
//create joint efforts
JointEfforts spJointEfforts = curSMJoint.CreateJointEfforts();
JointEffort spEffortM = curSMJoint.CreateJointEffort();
JointEffort spEffortN = curSMJoint.CreateJointEffort();
JointEffort spEffortT = curSMJoint.CreateJointEffort();
spEffortM.Value = dMaxM;
spEffortN.Value = dMaxN;
spEffortT.Value = dMaxT;
spJointEfforts.Add(spEffortM);
spJointEfforts.Add(spEffortN);
spJointEfforts.Add(spEffortT);
spJointLoadingCase.JointEfforts = spJointEfforts;
spJointLoadingCase.Name = sLoadingCaseName;
spJointLoadingCases.Add(spJointLoadingCase);
curSMJoint.SetJointNSAModuleLoadingCases(m_pCurSMRule, spJointLoadingCases);
}
}
private void setGridTorsorsValues(INodeStressAppModule m_pCurSMRule, int nRowIndex, string sLoadingCaseName)
{
IStressModuleJoint curSMJoint = m_pCurSMRule.Joint;
//get now the module loading cases
IJointLoadingCases spJointLoadingCases = curSMJoint.GetJointNSAModuleLoadingCases(m_pCurSMRule);
if (null != spJointLoadingCases)
{
if ((int)spJointLoadingCases.Count > 0)
{
bool bFoundLoadingCase = false;
for (int i = 0; i < (int)spJointLoadingCases.Count; i++)
{
IJointLoadingCase spJointLoadingCase = spJointLoadingCases[i];
IJointEfforts spJointEfforts = spJointLoadingCase.JointEfforts;
if ((null != spJointEfforts) && (spJointLoadingCase.Name == sLoadingCaseName))
{
if (3 == (int)spJointEfforts.Count)
{
bFoundLoadingCase = true;
m_dMaxM = (double)spJointEfforts[0].Value;
m_dMaxN = (double)spJointEfforts[1].Value;
m_dMaxV = (double)spJointEfforts[2].Value;
}
}
}
if (!bFoundLoadingCase)
{
m_dMaxM = 0;
m_dMaxN = 0;
m_dMaxV = 0;
}
}
else
{
m_dMaxM = 0;
m_dMaxN = 0;
m_dMaxV = 0;
}
}
//fill grid with found values
axSimpleTorsors.set_ItemDoubleValue(nRowIndex, 0, m_dMaxM);
axSimpleTorsors.set_ItemDoubleValue(nRowIndex, 1, m_dMaxN);
axSimpleTorsors.set_ItemDoubleValue(nRowIndex, 2, m_dMaxV);
//set the values in the joint loading cases
setJointTorsorsValues(m_CreatePlateDesign, m_dMaxM, m_dMaxN, m_dMaxV, sLoadingCaseName);
}
private void setJoint(INodeStressAppModule m_pCurSMRule, int nNoRows)
{
IStressModuleJoint curSMJoint = m_pCurSMRule.Joint;
//get current units for Moment and Force
IUnitsManager units = curSMJoint.Units;
IUnit momentUnit = (AstSTEELAUTOMATIONLib.IUnit)new DSCROOTSCOMLib.UnitClass();
IUnit forceUnit = (AstSTEELAUTOMATIONLib.IUnit)new DSCROOTSCOMLib.UnitClass();
units.getUnitOfMoment(momentUnit);
units.getUnitOfForce(forceUnit);
string strMomentUnit = "???", strForceUnit = "???";
strMomentUnit = momentUnit.getSymbol();
strForceUnit = forceUnit.getSymbol();
string strM_txt = AstCrtlDb.Instance.readUPS_PRP(41200);//"M"
string strN_txt = AstCrtlDb.Instance.readUPS_PRP(41201);//"N"
string strV_txt = AstCrtlDb.Instance.readUPS_PRP(41202);//"V"
string strCol_M_Name = strM_txt + " (" + strMomentUnit + ")";
string strCol_N_Name = strN_txt + " (" + strForceUnit + ")";
string strCol_V_Name = strV_txt + " (" + strForceUnit + ")";
//fill torsors grid
axSimpleTorsors.DeleteAllItems();
axSimpleTorsors.FixedRowCount = 1;
axSimpleTorsors.ColumnCount = 3;
axSimpleTorsors.RowCount = nNoRows + 1;
axSimpleTorsors.Height = 20 + (20 * nNoRows);
axSimpleTorsors.ExpandToFit();
axSimpleTorsors.set_ItemTextValue(0, 0, strCol_M_Name);
axSimpleTorsors.set_ItemTextValue(0, 1, strCol_N_Name);
axSimpleTorsors.set_ItemTextValue(0, 2, strCol_V_Name);
//column "M"
axSimpleTorsors.set_ColumnType(0, ASTCONTROLSLib.eColumnType.kEditBox); //kEditBox
axSimpleTorsors.set_ColumnDataType(0, ASTCONTROLSLib.eCellDataType.kUnits); //kUnits
axSimpleTorsors.set_ColumnUnits(0, ASTCONTROLSLib.eCellUnitType.kUnitMoment); //kUnitMoment
//column "N"
axSimpleTorsors.set_ColumnType(1, ASTCONTROLSLib.eColumnType.kEditBox); //kEditBox
axSimpleTorsors.set_ColumnDataType(1, ASTCONTROLSLib.eCellDataType.kUnits); //kUnits
axSimpleTorsors.set_ColumnUnits(1, ASTCONTROLSLib.eCellUnitType.kUnitForce); //kUnitForce
//column "T"
axSimpleTorsors.set_ColumnType(2, ASTCONTROLSLib.eColumnType.kEditBox); //kEditBox
axSimpleTorsors.set_ColumnDataType(2, ASTCONTROLSLib.eCellDataType.kUnits); //kUnits
axSimpleTorsors.set_ColumnUnits(2, ASTCONTROLSLib.eCellUnitType.kUnitForce); //kUnitForce
//check if the detailed torsors should be used
if (true == curSMJoint.UseDetailedTorsors)
{
for (int j = 1; j <= nNoRows; j++)
{
axSimpleTorsors.EnableCell(j, 0, 0);
axSimpleTorsors.EnableCell(j, 1, 0);
axSimpleTorsors.EnableCell(j, 2, 0);
}
}
else
{
for (int j = 1; j <= nNoRows; j++)
{
axSimpleTorsors.EnableCell(j, 0, 1);
axSimpleTorsors.EnableCell(j, 1, 1);
axSimpleTorsors.EnableCell(j, 2, 1);
}
}
setGridTorsorsValues(m_pCurSMRule, 1, "SimpleMaxTorsor");
}
private void setEnable(int nRow, INodeStressAppModule m_pCurSMRule)
{
axSimpleTorsors.EnableCell(nRow, 0, 0);
axSimpleTorsors.EnableCell(nRow, 1, 0);
axSimpleTorsors.EnableCell(nRow, 2, 0);
if (false == m_pCurSMRule.Joint.UseDetailedTorsors)
{
axSimpleTorsors.EnableCell(nRow, 0, (short)1);
axSimpleTorsors.EnableCell(nRow, 1, (short)1);
axSimpleTorsors.EnableCell(nRow, 2, (short)1);
}
axSimpleTorsors.Refresh();
}
#endregion
}
}
@@ -0,0 +1,128 @@
<?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>
<data name="axSimpleTorsors.OcxState" mimetype="application/x-microsoft.net.object.binary.base64">
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACFTeXN0
ZW0uV2luZG93cy5Gb3Jtcy5BeEhvc3QrU3RhdGUBAAAABERhdGEHAgIAAAAJAwAAAA8DAAAAJQAAAAIB
AAAAAQAAAAAAAAAAAAAAABAAAAADAAEA+hcAADwHAAAAAAAACw==
</value>
</data>
</root>
@@ -0,0 +1,91 @@
namespace SampleDesign
{
partial class Torsors
{
/// <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 Component 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()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Torsors));
this.btnDelLoading = new System.Windows.Forms.Button();
this.btnAddLoading = new System.Windows.Forms.Button();
this.axTorsors = new AxASTCONTROLSLib.AxAstOCXGrid();
((System.ComponentModel.ISupportInitialize)(this.axTorsors)).BeginInit();
this.SuspendLayout();
//
// btnDelLoading
//
this.btnDelLoading.Image = ((System.Drawing.Image)(resources.GetObject("btnDelLoading.Image")));
this.btnDelLoading.ImeMode = System.Windows.Forms.ImeMode.NoControl;
this.btnDelLoading.Location = new System.Drawing.Point(479, 249);
this.btnDelLoading.Name = "btnDelLoading";
this.btnDelLoading.Size = new System.Drawing.Size(24, 23);
this.btnDelLoading.TabIndex = 10;
this.btnDelLoading.UseVisualStyleBackColor = true;
this.btnDelLoading.ClientSizeChanged += new System.EventHandler(this.btnDelLoading_Click);
//
// btnAddLoading
//
this.btnAddLoading.Image = ((System.Drawing.Image)(resources.GetObject("btnAddLoading.Image")));
this.btnAddLoading.ImeMode = System.Windows.Forms.ImeMode.NoControl;
this.btnAddLoading.Location = new System.Drawing.Point(451, 249);
this.btnAddLoading.Name = "btnAddLoading";
this.btnAddLoading.Size = new System.Drawing.Size(24, 23);
this.btnAddLoading.TabIndex = 9;
this.btnAddLoading.UseVisualStyleBackColor = true;
this.btnAddLoading.Click += new System.EventHandler(this.btnAddLoading_Click);
//
// axTorsors
//
this.axTorsors.Enabled = true;
this.axTorsors.Location = new System.Drawing.Point(3, 3);
this.axTorsors.Name = "axTorsors";
this.axTorsors.OcxState = ((System.Windows.Forms.AxHost.State)(resources.GetObject("axTorsors.OcxState")));
this.axTorsors.Size = new System.Drawing.Size(499, 116);
this.axTorsors.TabIndex = 8;
this.axTorsors.OnGridCellEdited += new AxASTCONTROLSLib._DAstOCXGridEvents_OnGridCellEditedEventHandler(this.axTorsors_OnGridCellEdited);
//
// Torsors
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.BackColor = System.Drawing.SystemColors.ControlLightLight;
this.Controls.Add(this.btnDelLoading);
this.Controls.Add(this.btnAddLoading);
this.Controls.Add(this.axTorsors);
this.Name = "Torsors";
this.Size = new System.Drawing.Size(150, 150);
((System.ComponentModel.ISupportInitialize)(this.axTorsors)).EndInit();
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.Button btnDelLoading;
private System.Windows.Forms.Button btnAddLoading;
private AxASTCONTROLSLib.AxAstOCXGrid axTorsors;
}
}
@@ -0,0 +1,455 @@
//
//////////////////////////////////////////////////////////////////////////////
//
// Copyright 2015 Autodesk, Inc. All rights reserved.
//
// Use of this software is subject to the terms of the Autodesk license
// agreement provided at the time of installation or download, or which
// otherwise accompanies this software in either electronic or hard copy form.
//
//////////////////////////////////////////////////////////////////////////////
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using AstSTEELAUTOMATIONLib;
using Autodesk.AdvanceSteel.DotNetRoots.DatabaseAccess;
namespace SampleDesign
{
public partial class Torsors : UserControl
{
#region Constructor
public Torsors()
{
InitializeComponent();
this.Visible = false;
}
#endregion
#region private members
private CreatePlateDesign m_JointDesignSample;
#endregion
public void setJoint(CreatePlateDesign pVal)
{
m_JointDesignSample = pVal;
if (m_JointDesignSample != null)
callFillGridData(m_JointDesignSample);
}
private void axTorsors_OnGridCellEdited(object sender, AxASTCONTROLSLib._DAstOCXGridEvents_OnGridCellEditedEvent e)
{
int nRow = axTorsors.GetFocusCellRow();
int nCol = axTorsors.GetFocusCellColumn();
if (m_JointDesignSample != null)
callGridCellEditedTorsors(m_JointDesignSample, nRow, nCol);
}
private void btnAddLoading_Click(object sender, EventArgs e)
{
if (m_JointDesignSample != null)
callAddLoading(m_JointDesignSample);
}
private void btnDelLoading_Click(object sender, EventArgs e)
{
if (m_JointDesignSample != null)
callDelLoading(m_JointDesignSample);
}
private void callAddLoading(INodeStressAppModule m_pCurSMRule)
{
//add new loading in joint
IStressModuleJoint curSMJoint = m_pCurSMRule.Joint;
//get now the module loading cases / efforts
JointLoadingCases spJointLoadingCases = curSMJoint.GetJointNSAModuleLoadingCases(m_pCurSMRule);
if (null != spJointLoadingCases)
{
JointLoadingCase spNewCase;
JointEfforts spNewEfforts;
JointEffort spNewEffortM, spNewEffortN, spNewEffortV;
spNewEffortM = curSMJoint.CreateJointEffort();
spNewEffortN = curSMJoint.CreateJointEffort();
spNewEffortV = curSMJoint.CreateJointEffort();
spNewEfforts = curSMJoint.CreateJointEfforts();
spNewCase = curSMJoint.CreateJointLoadingCase();
double newVal = 0.0;
spNewEffortM.Name = "M";
spNewEffortM.Value = newVal;
spNewEffortN.Name = "N";
spNewEffortN.Value = newVal;
spNewEffortV.Name = "V";
spNewEffortV.Value = newVal;
spNewEfforts.Add(spNewEffortM);
spNewEfforts.Add(spNewEffortN);
spNewEfforts.Add(spNewEffortV);
string strLoadingName = createInternalLoadingName("-");
spNewCase.Name = strLoadingName;
spNewCase.JointEfforts = spNewEfforts;
spJointLoadingCases.Add(spNewCase);
curSMJoint.SetJointNSAModuleLoadingCases(m_pCurSMRule, spJointLoadingCases);
}
//add new line in grid
string lineHeader = getNextLineHeader().ToString();
axTorsors.InsertRow(ref lineHeader, axTorsors.RowCount - 1);
//description
axTorsors.set_ItemTextValue(axTorsors.RowCount - 1, 1, "-");
//M
axTorsors.set_ItemDoubleValue(axTorsors.RowCount - 1, 2, 0);
//N
axTorsors.set_ItemDoubleValue(axTorsors.RowCount - 1, 3, 0);
//V
axTorsors.set_ItemDoubleValue(axTorsors.RowCount - 1, 4, 0);
}
private void callDelLoading(INodeStressAppModule m_pCurSMRule)
{
int selectedRow = axTorsors.GetFocusCellRow();
if (selectedRow > (axTorsors.FixedRowCount - 1))
{
//get the real index of the torsor in the NSA module data
int realTorsorIndex = getTorsorIndex(selectedRow, 0);
if (-1 == realTorsorIndex)
return;
IStressModuleJoint curSMJoint = m_pCurSMRule.Joint;
//get now the module loading cases / efforts
IJointLoadingCases spJointLoadingCases = curSMJoint.GetJointNSAModuleLoadingCases(m_pCurSMRule);
if (null != spJointLoadingCases)
{
if ((int)spJointLoadingCases.Count > 0)
{
JointLoadingCases spNewCases = curSMJoint.CreateJointLoadingCases();
if (null != spNewCases)
{
for (int i = 0; i < (int)spJointLoadingCases.Count; i++)
{
if (i != realTorsorIndex) //remove selected torsor
{
JointLoadingCase spOldCase = spJointLoadingCases[i];
spNewCases.Add(spOldCase);
}
}
//set back the remaining torsors
curSMJoint.SetJointNSAModuleLoadingCases(m_pCurSMRule, spNewCases);
}
else
return;
}
else
return;
}
else
return;
axTorsors.DeleteRow(selectedRow);
}
}
private void callGridCellEditedTorsors(INodeStressAppModule m_pCurSMRule, int nRow, int nCol)
{
//get the real index of the torsor in the NSA module data
int realTorsorIndex = getTorsorIndex(nRow, nCol);
if (-1 == realTorsorIndex)
return;
IStressModuleJoint curSMJoint = m_pCurSMRule.Joint;
//get now the module loading cases
try
{
JointLoadingCases spJointLoadingCases = curSMJoint.GetJointNSAModuleLoadingCases(m_pCurSMRule);
if (null != spJointLoadingCases)
{
if ((int)spJointLoadingCases.Count > 0)
{
IJointLoadingCase spJointLoadingCase = spJointLoadingCases[realTorsorIndex];
string strCaseName = spJointLoadingCase.Name;
IJointEfforts spJointEfforts = spJointLoadingCase.JointEfforts;
if (null != spJointEfforts)
{
if (3 == (int)spJointEfforts.Count)
{
IJointEffort spEffortM, spEffortN, spEffortV; //M, N, V
spEffortM = spJointEfforts[0];
spEffortN = spJointEfforts[1];
spEffortV = spJointEfforts[2];
if (1 == nCol) // "Description" was modified
{
string strNew = axTorsors.get_ItemTextValue(nRow, nCol);
spJointLoadingCase.Name = createInternalLoadingName(strNew);
}
else // "M", "N" or "V" modified
{
double dfNew = axTorsors.get_ItemDoubleValue(nRow, nCol);
if (2 == nCol) // "M"
spEffortM.Value= dfNew;
if (3 == nCol) // "N"
spEffortN.Value = dfNew;
if (4 == nCol) // "V"
spEffortV.Value = dfNew;
}
}
}
}
//set back joint loading cases
curSMJoint.SetJointNSAModuleLoadingCases(m_pCurSMRule, spJointLoadingCases);
}
}
catch (Exception e)
{
System.Diagnostics.Debug.Write(e);
}
}
private void callFillGridData(INodeStressAppModule m_pCurSMRule)
{
//fill torsors grid
axTorsors.DeleteAllItems();
axTorsors.RowCount = 1;
axTorsors.ColumnCount = 5;
axTorsors.FixedRowCount = 1;
axTorsors.FixedColumnCount = 1;
IStressModuleJoint curSMJoint = m_pCurSMRule.Joint;
//get current units for Moment and Force
IUnitsManager units = curSMJoint.Units;
IUnit momentUnit = (IUnit)(new DSCROOTSCOMLib.UnitClass());
IUnit forceUnit = (IUnit)(new DSCROOTSCOMLib.UnitClass());
units.getUnitOfMoment(momentUnit);
units.getUnitOfForce(forceUnit);
string strMomentUnit = "???", strForceUnit = "???";
strMomentUnit = momentUnit.getSymbol();
strForceUnit = forceUnit.getSymbol();
string strM_txt = AstCrtlDb.Instance.readUPS_PRP(41200);//"M"
string strN_txt = AstCrtlDb.Instance.readUPS_PRP(41201);//"N"
string strV_txt = AstCrtlDb.Instance.readUPS_PRP(41202);//"V"
string strCol_M_Name = strM_txt + " (" + strMomentUnit + ")";
string strCol_N_Name = strN_txt + " (" + strForceUnit + ")";
string strCol_V_Name = strV_txt + " (" + strForceUnit + ")";
string strIndexName = "Case", strDescriptionName = "Name";
strDescriptionName = AstCrtlDb.Instance.readUPS_PRP(147);
strIndexName = AstCrtlDb.Instance.readUPS_PRP(146);
axTorsors.set_ItemTextValue(0, 0, strIndexName);
axTorsors.set_ItemTextValue(0, 1, strDescriptionName);
axTorsors.set_ItemTextValue(0, 2, strCol_M_Name);
axTorsors.set_ItemTextValue(0, 3, strCol_N_Name);
axTorsors.set_ItemTextValue(0, 4, strCol_V_Name);
axTorsors.set_ColumnWidth(0, 50);
axTorsors.set_ColumnWidth(1, 95);
axTorsors.set_ColumnWidth(2, 50);
axTorsors.set_ColumnWidth(3, 50);
axTorsors.set_ColumnWidth(4, 50);
//column "Description"
axTorsors.set_ColumnType(1, ASTCONTROLSLib.eColumnType.kEditBox); //kEditBox
axTorsors.set_ColumnDataType(1, ASTCONTROLSLib.eCellDataType.kString); //kString
//column "M"
axTorsors.set_ColumnType(2, ASTCONTROLSLib.eColumnType.kEditBox); //kEditBox
axTorsors.set_ColumnDataType(2, ASTCONTROLSLib.eCellDataType.kUnits); //kUnits
axTorsors.set_ColumnUnits(2, ASTCONTROLSLib.eCellUnitType.kUnitMoment); //kUnitMoment
//column "N"
axTorsors.set_ColumnType(3, ASTCONTROLSLib.eColumnType.kEditBox); //kEditBox
axTorsors.set_ColumnDataType(3, ASTCONTROLSLib.eCellDataType.kUnits); //kUnits
axTorsors.set_ColumnUnits(3, ASTCONTROLSLib.eCellUnitType.kUnitForce); //kUnitForce
//column "V"
axTorsors.set_ColumnType(4, ASTCONTROLSLib.eColumnType.kEditBox); //kEditBox
axTorsors.set_ColumnDataType(4, ASTCONTROLSLib.eCellDataType.kUnits); //kUnits
axTorsors.set_ColumnUnits(4, ASTCONTROLSLib.eCellUnitType.kUnitForce); //kUnitForce
//get now the module loading cases
IJointLoadingCases spJointLoadingCases = curSMJoint.GetJointNSAModuleLoadingCases(m_pCurSMRule);
if (null != spJointLoadingCases)
{
if ((int)spJointLoadingCases.Count > 0)
{
for (int i = 0; i < (int)spJointLoadingCases.Count; i++)
{
IJointLoadingCase spJointLoadingCase = spJointLoadingCases[i];
IJointEfforts spJointEfforts = spJointLoadingCase.JointEfforts;
string strCaseName = spJointLoadingCase.Name;
if ((null != spJointEfforts) &&(strCaseName != "SimpleMaxTorsor"))
{
if (3 == (int)spJointEfforts.Count)
{
JointEffort spEffortM, spEffortN, spEffortV; //M, N, V
double dfEffM, dfEffN, dfEffV;
spEffortM = spJointEfforts[0];
spEffortN = spJointEfforts[1];
spEffortV = spJointEfforts[2];
dfEffM = (double)spEffortM.Value;
dfEffN = (double)spEffortN.Value;
dfEffV = (double)spEffortV.Value;
//add new line in grid
string strLineHeader = getNextLineHeader().ToString();
axTorsors.InsertRow(ref strLineHeader, axTorsors.RowCount - 1);
//description
axTorsors.set_ItemTextValue(axTorsors.RowCount - 1, 1, getUserLoadingName(strCaseName));
//M
axTorsors.set_ItemDoubleValue(axTorsors.RowCount - 1, 2, dfEffM);
//N
axTorsors.set_ItemDoubleValue(axTorsors.RowCount - 1, 3, dfEffN);
//T
axTorsors.set_ItemDoubleValue(axTorsors.RowCount - 1, 4, dfEffV);
}
}
}
}
}
axTorsors.AutoSize();
axTorsors.GridBkColor = SystemColors.Window;
}
private long getNextLineHeader()
{
long nextLineNumber = 0;
//add a line with the next largest number
long existingMax = 0;
nextLineNumber = axTorsors.RowCount;
//get the existing max number
long rowCount = axTorsors.RowCount;
if (rowCount > 1)
{
for (int i = 1; i < rowCount; i++)
{
int thisVal = 0;
thisVal = int.Parse(axTorsors.get_ItemTextValue(i, 0));
if (thisVal > existingMax)
existingMax = thisVal;
}
}
if (existingMax >= axTorsors.RowCount)
nextLineNumber = existingMax + 1;
return nextLineNumber;
}
private int getTorsorIndex(int gridRow, int gridCol)
{
int result = -1;
if (m_JointDesignSample != null)
result = callGetTorsorsIndex(m_JointDesignSample, gridRow, gridCol);
return result;
}
private int callGetTorsorsIndex(INodeStressAppModule m_pCurSMRule, int gridRow, int gridCol)
{
int result = -1;
IStressModuleJoint curSMJoint = m_pCurSMRule.Joint;
//get now the module loading cases
IJointLoadingCases spJointLoadingCases = curSMJoint.GetJointNSAModuleLoadingCases(m_pCurSMRule);
if (null != spJointLoadingCases)
{
if ((int)spJointLoadingCases.Count > 0)
{
int nLocatingIndex = 0;
for (int i = 0; i < (int)spJointLoadingCases.Count; i++)
{
JointLoadingCase spJointLoadingCase = spJointLoadingCases[i];
JointEfforts spJointEfforts = spJointLoadingCase.JointEfforts;
if ((null != spJointEfforts) && (spJointLoadingCase.Name != "SimpleMaxTorsor"))
{
if ((gridRow - axTorsors.FixedRowCount) == nLocatingIndex) //found the index we want
{
result = i;
}
nLocatingIndex++;
}
}
}
}
return result;
}
private string createInternalLoadingName(string strLoadingName)
{
string strInternalName = string.Format("Beam {0:D} #@#@#", 1);
strInternalName = strInternalName + strLoadingName;
return strInternalName;
}
private string getUserLoadingName(string strInternalName)
{
int nStartIndex = 12;
bool bSeparatorExists = strInternalName.Contains("#@#@#");
bool bLongSeparatorExists = strInternalName.Contains("#@#@#@#");
if (bLongSeparatorExists)
{
bSeparatorExists = true;
nStartIndex = 14;
}
if (bSeparatorExists)
return strInternalName.Substring(nStartIndex);
else
return strInternalName;
}
}
}
@@ -0,0 +1,148 @@
<?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>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="btnDelLoading.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAIhJREFUWEftlNEK
wCAIRf10/3zNQBBpyx5uEdxosEHsHo9uIlw0QAM0cIOBR+Tdh5aF+3UIoZdfhoDZmkGoaoeEWvqC2Nqi
COFVwyvPWmPw9nCDiRbs3oCgvY8vz3Pgz3CI3PsRFAziL9xBYCYq4Q4B+ypU6z8YGMTqlMPmYRWE52mA
BmhgZqABX42IDaWvyEAAAAAASUVORK5CYII=
</value>
</data>
<data name="btnAddLoading.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAALZJREFUWEftlVEK
wCAIQD16R+tmLQmXRmWQ/oSCMNbA11McQEQYCANhQDGQUiq7dBeIxXPO08QzgFLTMQigTILOXCE0gFac
0sGEBkDz4WZhB0BdwRlp8+AQGgAWl20wHsodgCyOBnqaGVkBjMWpHeYQOkC7dQfAFnAbl3OxAqC+z/YD
vusQrwCM61hOPm+BHMbL+1eR/77nG48/jzNg2H+k1/+G442NAc4UGms/KxpfhYEw8IiBD3KjPijZGMVL
AAAAAElFTkSuQmCC
</value>
</data>
<data name="axTorsors.OcxState" mimetype="application/x-microsoft.net.object.binary.base64">
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACFTeXN0
ZW0uV2luZG93cy5Gb3Jtcy5BeEhvc3QrU3RhdGUBAAAABERhdGEHAgIAAAAJAwAAAA8DAAAAJQAAAAIB
AAAAAQAAAAAAAAAAAAAAABAAAAADAAEAkzMAAP0LAAAAAAAACw==
</value>
</data>
</root>
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,141 @@
namespace SteelConnectionsJointExample
{
partial class Page1
{
/// <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()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Page1));
this.axAstUnitPlateThickness = new AxASTCONTROLSLib.AxAstUnitControl();
this.axAstUnitPlateLength = new AxASTCONTROLSLib.AxAstUnitControl();
this.axAstUnitPlateWidth = new AxASTCONTROLSLib.AxAstUnitControl();
this.axAstUnitCutBack = new AxASTCONTROLSLib.AxAstUnitControl();
this.axAnchor = new AxASTCONTROLSLib.AxBoltStandards();
this.axAstControls1 = new AxASTCONTROLSLib.AxAstControls();
((System.ComponentModel.ISupportInitialize)(this.axAstUnitPlateThickness)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.axAstUnitPlateLength)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.axAstUnitPlateWidth)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.axAstUnitCutBack)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.axAnchor)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.axAstControls1)).BeginInit();
this.SuspendLayout();
//
// axAstUnitPlateThickness
//
this.axAstUnitPlateThickness.Location = new System.Drawing.Point(13, 13);
this.axAstUnitPlateThickness.Margin = new System.Windows.Forms.Padding(4);
this.axAstUnitPlateThickness.Name = "axAstUnitPlateThickness";
this.axAstUnitPlateThickness.OcxState = ((System.Windows.Forms.AxHost.State)(resources.GetObject("axAstUnitPlateThickness.OcxState")));
this.axAstUnitPlateThickness.Size = new System.Drawing.Size(281, 29);
this.axAstUnitPlateThickness.TabIndex = 0;
this.axAstUnitPlateThickness.ValueChanged += new System.EventHandler(this.axAstUnitPlateThickness_ValueChanged);
//
// axAstUnitPlateLength
//
this.axAstUnitPlateLength.Location = new System.Drawing.Point(13, 42);
this.axAstUnitPlateLength.Margin = new System.Windows.Forms.Padding(4);
this.axAstUnitPlateLength.Name = "axAstUnitPlateLength";
this.axAstUnitPlateLength.OcxState = ((System.Windows.Forms.AxHost.State)(resources.GetObject("axAstUnitPlateLength.OcxState")));
this.axAstUnitPlateLength.Size = new System.Drawing.Size(281, 29);
this.axAstUnitPlateLength.TabIndex = 1;
this.axAstUnitPlateLength.ValueChanged += new System.EventHandler(this.axAstUnitPlateLength_ValueChanged);
//
// axAstUnitPlateWidth
//
this.axAstUnitPlateWidth.Location = new System.Drawing.Point(13, 71);
this.axAstUnitPlateWidth.Margin = new System.Windows.Forms.Padding(4);
this.axAstUnitPlateWidth.Name = "axAstUnitPlateWidth";
this.axAstUnitPlateWidth.OcxState = ((System.Windows.Forms.AxHost.State)(resources.GetObject("axAstUnitPlateWidth.OcxState")));
this.axAstUnitPlateWidth.Size = new System.Drawing.Size(281, 29);
this.axAstUnitPlateWidth.TabIndex = 2;
this.axAstUnitPlateWidth.ValueChanged += new System.EventHandler(this.axAstUnitPlateWidth_ValueChanged);
//
// axAstUnitCutBack
//
this.axAstUnitCutBack.Location = new System.Drawing.Point(13, 100);
this.axAstUnitCutBack.Margin = new System.Windows.Forms.Padding(4);
this.axAstUnitCutBack.Name = "axAstUnitCutBack";
this.axAstUnitCutBack.OcxState = ((System.Windows.Forms.AxHost.State)(resources.GetObject("axAstUnitCutBack.OcxState")));
this.axAstUnitCutBack.Size = new System.Drawing.Size(281, 29);
this.axAstUnitCutBack.TabIndex = 3;
this.axAstUnitCutBack.ValueChanged += new System.EventHandler(this.axAstUnitCutBack_ValueChanged);
//
// axAnchor
//
this.axAnchor.Location = new System.Drawing.Point(13, 130);
this.axAnchor.Margin = new System.Windows.Forms.Padding(4);
this.axAnchor.Name = "axAnchor";
this.axAnchor.OcxState = ((System.Windows.Forms.AxHost.State)(resources.GetObject("axAnchor.OcxState")));
this.axAnchor.Size = new System.Drawing.Size(305, 151);
this.axAnchor.TabIndex = 4;
this.axAnchor.BoltChanged += new System.EventHandler(this.axAnchor_BoltChanged);
//
// axAstControls1
//
this.axAstControls1.Location = new System.Drawing.Point(330, 17);
this.axAstControls1.Name = "axAstControls1";
this.axAstControls1.OcxState = ((System.Windows.Forms.AxHost.State)(resources.GetObject("axAstControls1.OcxState")));
this.axAstControls1.Size = new System.Drawing.Size(269, 243);
this.axAstControls1.TabIndex = 5;
//
// Page1
//
this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(624, 354);
this.Controls.Add(this.axAstControls1);
this.Controls.Add(this.axAnchor);
this.Controls.Add(this.axAstUnitCutBack);
this.Controls.Add(this.axAstUnitPlateWidth);
this.Controls.Add(this.axAstUnitPlateLength);
this.Controls.Add(this.axAstUnitPlateThickness);
this.Enabled = false;
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
this.Margin = new System.Windows.Forms.Padding(4);
this.Name = "Page1";
this.ShowIcon = false;
this.ShowInTaskbar = false;
this.Text = "Page1";
((System.ComponentModel.ISupportInitialize)(this.axAstUnitPlateThickness)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.axAstUnitPlateLength)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.axAstUnitPlateWidth)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.axAstUnitCutBack)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.axAnchor)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.axAstControls1)).EndInit();
this.ResumeLayout(false);
}
#endregion
private AxASTCONTROLSLib.AxAstUnitControl axAstUnitPlateThickness;
private AxASTCONTROLSLib.AxAstUnitControl axAstUnitPlateLength;
private AxASTCONTROLSLib.AxAstUnitControl axAstUnitPlateWidth;
private AxASTCONTROLSLib.AxAstUnitControl axAstUnitCutBack;
private AxASTCONTROLSLib.AxBoltStandards axAnchor;
private AxASTCONTROLSLib.AxAstControls axAstControls1;
}
}
@@ -0,0 +1,156 @@
//
//////////////////////////////////////////////////////////////////////////////
//
// Copyright 2015 Autodesk, Inc. All rights reserved.
//
// Use of this software is subject to the terms of the Autodesk license
// agreement provided at the time of installation or download, or which
// otherwise accompanies this software in either electronic or hard copy form.
//
//////////////////////////////////////////////////////////////////////////////
using Autodesk.AdvanceSteel.DotNetRoots;
using System;
using System.Windows.Forms;
using AstSTEELAUTOMATIONLib;
namespace SteelConnectionsJointExample
{
public partial class Page1 : Form
{
private CreatePlate m_CurRule = null;
private const int WS_CHILD = 0x40000000;
public Page1()
{
InitializeComponent();
ScaleAxControls();
}
public Page1(CreatePlate rule)
{
InitializeComponent();
ScaleAxControls();
m_CurRule = rule;
axAstUnitPlateThickness.DoubleValue = m_CurRule.m_dPlateThickness;
axAstUnitPlateLength.DoubleValue = m_CurRule.m_dPlateLength;
axAstUnitPlateWidth.DoubleValue = m_CurRule.m_dPlateWidth;
axAstUnitCutBack.DoubleValue = m_CurRule.m_dCutBack;
axAnchor.BoltStandard = m_CurRule.m_sAnchorType;
axAnchor.BoltMaterial = m_CurRule.m_sAnchorMaterial;
axAnchor.BoltSet = m_CurRule.m_sAnchorAssembly;
axAnchor.BoltDiameter = m_CurRule.m_dAnchorDiameter;
axAnchor.AnchorLength = m_CurRule.m_dAnchorLength;
}
protected override CreateParams CreateParams
{
get
{
CreateParams cp = base.CreateParams;
cp.Style = cp.Style | WS_CHILD;
return cp;
}
}
private void axAstUnitPlateThickness_ValueChanged(object sender, EventArgs e)
{
// TODO: Add your message handler code here
if (m_CurRule != null)
{
IJoint curJoint = m_CurRule.Joint;
if (axAstUnitPlateThickness.DoubleValue != m_CurRule.m_dPlateThickness)
{
m_CurRule.m_dPlateThickness = axAstUnitPlateThickness.DoubleValue;
curJoint.SaveData(m_CurRule);
curJoint.UpdateDrivenConstruction();
}
}
}
private void axAstUnitPlateLength_ValueChanged(object sender, EventArgs e)
{
// TODO: Add your message handler code here
if (m_CurRule != null)
{
IJoint curJoint = m_CurRule.Joint;
if (axAstUnitPlateLength.DoubleValue != m_CurRule.m_dPlateLength)
{
m_CurRule.m_dPlateLength = axAstUnitPlateLength.DoubleValue;
curJoint.SaveData(m_CurRule);
curJoint.UpdateDrivenConstruction();
}
}
}
private void axAstUnitPlateWidth_ValueChanged(object sender, EventArgs e)
{
// TODO: Add your message handler code here
if (m_CurRule != null)
{
IJoint curJoint = m_CurRule.Joint;
if (axAstUnitPlateWidth.DoubleValue != m_CurRule.m_dPlateWidth)
{
m_CurRule.m_dPlateWidth = axAstUnitPlateWidth.DoubleValue;
curJoint.SaveData(m_CurRule);
curJoint.UpdateDrivenConstruction();
}
}
}
private void axAstUnitCutBack_ValueChanged(object sender, EventArgs e)
{
// TODO: Add your message handler code here
if (m_CurRule != null)
{
IJoint curJoint = m_CurRule.Joint;
if (axAstUnitCutBack.DoubleValue != m_CurRule.m_dCutBack)
{
m_CurRule.m_dCutBack = axAstUnitCutBack.DoubleValue;
curJoint.SaveData(m_CurRule); //Save data to joint
curJoint.UpdateDrivenConstruction(); //Update the joint
}
}
}
private void axAnchor_BoltChanged(object sender, EventArgs e)
{
// TODO: Add your message handler code here
if (m_CurRule != null)
{
IJoint curJoint = m_CurRule.Joint;
if (axAnchor.AnchorLength != m_CurRule.m_dAnchorLength ||
axAnchor.BoltDiameter != m_CurRule.m_dAnchorDiameter ||
axAnchor.BoltMaterial != m_CurRule.m_sAnchorMaterial ||
axAnchor.BoltStandard != m_CurRule.m_sAnchorType ||
axAnchor.BoltSet != m_CurRule.m_sAnchorAssembly)
{
m_CurRule.m_sAnchorType = axAnchor.BoltStandard;
m_CurRule.m_sAnchorMaterial = axAnchor.BoltMaterial;
m_CurRule.m_sAnchorAssembly = axAnchor.BoltSet;
m_CurRule.m_dAnchorDiameter = axAnchor.BoltDiameter;
m_CurRule.m_dAnchorLength = axAnchor.AnchorLength;
curJoint.SaveData(m_CurRule); //Save data to joint
curJoint.UpdateDrivenConstruction(); //Update the joint
}
}
}
private void ScaleAxControls()
{
axAstUnitPlateThickness.Location = AstDpi.Scale(axAstUnitPlateThickness.Location);
axAstUnitPlateLength.Location = AstDpi.Scale(axAstUnitPlateLength.Location);
axAstUnitPlateWidth.Location = AstDpi.Scale(axAstUnitPlateWidth.Location);
axAstUnitCutBack.Location = AstDpi.Scale(axAstUnitCutBack.Location);
axAnchor.Location = AstDpi.Scale(axAnchor.Location);
axAstControls1.Location = AstDpi.Scale(axAstControls1.Location);
}
}
}
@@ -0,0 +1,174 @@
<?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>
<data name="axAstUnitPlateThickness.OcxState" mimetype="application/x-microsoft.net.object.binary.base64">
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACFTeXN0
ZW0uV2luZG93cy5Gb3Jtcy5BeEhvc3QrU3RhdGUBAAAABERhdGEHAgIAAAAJAwAAAA8DAAAAZAAAAAIB
AAAAAQAAAAAAAAAAAAAAAE8AAAADAAEAPBcAAGYCAABEAAAAAANS4wuRj84RneMAqgBLuFEBAAAAkAEg
SAEAFE1pY3Jvc29mdCBTYW5zIFNlcmlmAQAA////AOCTBACCAAAACw==
</value>
</data>
<data name="axAstUnitPlateLength.OcxState" mimetype="application/x-microsoft.net.object.binary.base64">
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACFTeXN0
ZW0uV2luZG93cy5Gb3Jtcy5BeEhvc3QrU3RhdGUBAAAABERhdGEHAgIAAAAJAwAAAA8DAAAAZAAAAAIB
AAAAAQAAAAAAAAAAAAAAAE8AAAADAAEAPBcAAGYCAABEAAAAAANS4wuRj84RneMAqgBLuFEBAAAAkAEg
SAEAFE1pY3Jvc29mdCBTYW5zIFNlcmlmAQAA////AOGTBACCAAAACw==
</value>
</data>
<data name="axAstUnitPlateWidth.OcxState" mimetype="application/x-microsoft.net.object.binary.base64">
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACFTeXN0
ZW0uV2luZG93cy5Gb3Jtcy5BeEhvc3QrU3RhdGUBAAAABERhdGEHAgIAAAAJAwAAAA8DAAAAZAAAAAIB
AAAAAQAAAAAAAAAAAAAAAE8AAAADAAEAPBcAAGYCAABEAAAAAANS4wuRj84RneMAqgBLuFEBAAAAkAEg
SAEAFE1pY3Jvc29mdCBTYW5zIFNlcmlmAQAA////AOKTBACCAAAACw==
</value>
</data>
<data name="axAstUnitCutBack.OcxState" mimetype="application/x-microsoft.net.object.binary.base64">
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACFTeXN0
ZW0uV2luZG93cy5Gb3Jtcy5BeEhvc3QrU3RhdGUBAAAABERhdGEHAgIAAAAJAwAAAA8DAAAAZAAAAAIB
AAAAAQAAAAAAAAAAAAAAAE8AAAADAAEAPBcAAGYCAABEAAAAAANS4wuRj84RneMAqgBLuFEBAAAAkAEg
SAEAFE1pY3Jvc29mdCBTYW5zIFNlcmlmAQAA////AOOTBACCAAAACw==
</value>
</data>
<data name="axAnchor.OcxState" mimetype="application/x-microsoft.net.object.binary.base64">
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACFTeXN0
ZW0uV2luZG93cy5Gb3Jtcy5BeEhvc3QrU3RhdGUBAAAABERhdGEHAgIAAAAJAwAAAA8DAAAArgAAAAIB
AAAAAQAAAAAAAAAAAAAAAJkAAAADAAEAOBkAAHwMAABEAAAAAANS4wuRj84RneMAqgBLuFEBAAAAkAEg
SAEAFE1pY3Jvc29mdCBTYW5zIFNlcmlmAQAAAkPICQAAdngBAHd4AQB4eAEAAAAAAAAAMEACAP/+/xBK
AC0AQQBuAGsAZQByACAAUgBpAG4AZwBiAHUAYwBoAP/+/wM0AC4ANgAAAAAAACB8QM0JAAAL
</value>
</data>
<data name="axAstControls1.OcxState" mimetype="application/x-microsoft.net.object.binary.base64">
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACFTeXN0
ZW0uV2luZG93cy5Gb3Jtcy5BeEhvc3QrU3RhdGUBAAAABERhdGEHAgIAAAAJAwAAAA8DAAAAKgAAAAIB
AAAAAQAAAAAAAAAAAAAAABUAAAADAAEAPhYAABgUAABAAAAAAW/tAAAL
</value>
</data>
</root>
@@ -0,0 +1,36 @@
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("SteelConnectionsJointExample")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("Autodesk")]
[assembly: AssemblyProduct("SteelConnectionsJointExample")]
[assembly: AssemblyCopyright("Copyright © Autodesk 2015")]
[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(true)]
// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("e2d67290-4d6c-4a85-a02b-db93e642f9c9")]
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
@@ -0,0 +1,99 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="..\StructuralConnectionsSDKSamples.Common.props" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">x64</Platform>
<ProjectGuid>{0D5537D0-19F6-40A0-B5C6-852210AE6983}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>SteelConnectionsJointExample</RootNamespace>
<AssemblyName>SteelConnectionsJointExample</AssemblyName>
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<SccProjectName>SAK</SccProjectName>
<SccLocalPath>SAK</SccLocalPath>
<SccAuxPath>SAK</SccAuxPath>
<SccProvider>SAK</SccProvider>
<TargetFrameworkProfile />
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>..\..\Binaries\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<Prefer32Bit>false</Prefer32Bit>
<PlatformTarget>x64</PlatformTarget>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>..\..\Binaries\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<Prefer32Bit>false</Prefer32Bit>
<PlatformTarget>x64</PlatformTarget>
</PropertyGroup>
<ItemGroup>
<Reference Include="DotNetRoots">
<SpecificVersion>False</SpecificVersion>
<HintPath>$(ASInstallDir)\DotNetRoots.dll</HintPath>
</Reference>
<Reference Include="AxInterop.ASTCONTROLSLib">
<HintPath>$(ASInstallDir)\AxInterop.ASTCONTROLSLib.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="Interop.AstSTEELAUTOMATIONLib5">
<HintPath>$(ASInstallDir)\Interop.AstSTEELAUTOMATIONLib5.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="Interop.DSCGEOMCOMLib">
<HintPath>$(ASInstallDir)\Interop.DSCGEOMCOMLib.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="Interop.DSCODBCCOMLib">
<HintPath>$(ASInstallDir)\Interop.DSCODBCCOMLib.dll</HintPath>
<EmbedInteropTypes>True</EmbedInteropTypes>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Drawing" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="CreatePlate.cs" />
<Compile Include="Page1.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Page1.Designer.cs">
<DependentUpon>Page1.cs</DependentUpon>
</Compile>
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
<WCFMetadata Include="Service References\" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="Page1.resx">
<DependentUpon>Page1.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.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>
-->
</Project>
@@ -0,0 +1,16 @@
CREATE TABLE [dbo].[RULE_CreatePlate]
(
[Key] INT NOT NULL,
[Comment] NVARCHAR (64) NULL,
[Section] NVARCHAR (128) NULL,
[PlateThickness] FLOAT (53) NULL,
[PlateLength] FLOAT (53) NULL,
[PlateWidth] FLOAT (53) NULL,
[CutBack] FLOAT (53) NULL,
[AnchorMaterial] NVARCHAR (50) NULL,
[AnchorType] NVARCHAR (50) NULL,
[AnchorAssembly] NVARCHAR (50) NULL,
[AnchorDiameter] FLOAT (53) NULL,
[AnchorLength] FLOAT (53) NULL,
[HoleTolerance] FLOAT (53) NULL
)
@@ -0,0 +1,674 @@
using System;
using Autodesk.AdvanceSteel.CADAccess;
using Autodesk.AdvanceSteel.CADLink.Database;
using Autodesk.AdvanceSteel.ConstructionTypes;
using Autodesk.AdvanceSteel.Geometry;
using Autodesk.AdvanceSteel.Modelling;
using Autodesk.AdvanceSteel.DotNetRoots.DatabaseAccess;
using Autodesk.AdvanceSteel.Profiles;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
namespace SampleLapJoint
{
public class LapJoint : IRule
{
ObjectId _jointId;
// property sheet 1 - "Bolt arrangement"
int _iNoBoltAlong;
double _dIntermDistAlong;
double _dEdgeDistAlong1;
double _dEdgeDistAlong2;
int _iLayoutAcross; // 0 = center, 1 = from side 1, 2 = from side 2
int _iNoBoltAcross;
double _dIntermDistAcross;
double _dOffsetAcross;
int _iStaggering; // 0 = none, 1 = side 1, 2 = side 2
// property sheet 2 - "Bolt parameter"
double _dBoltDiameter;
string _sBoltType;
string _sBoltGrade;
string _sBoltSet;
int _iInvert;
int _iBoltLocation;// 0 = site, 1 = shop
// members that not written on fillers
Matrix3d _CS;
Vector3d _vForward, _vSide, _vUp;
Beam.eEnd _Beam2ShorteningEnd;
Point3d _ptOrigin;
public ObjectId JointId { get { return _jointId; } set { _jointId = value; } }
void IRule.CreateObjects()
{
//get the input objects
IJoint jnt = DatabaseManager.Open(JointId) as IJoint;
IEnumerable<FilerObject> input = jnt.InputObjects;
//create an array that will contain all the objects created by the joint
List<CreatedObjectInformation> arrCrOjbInfo = new List<CreatedObjectInformation>();
try
{
if (input.Count() == 2)
{
StraightBeam firstBeam = input.ElementAt(0) as StraightBeam;
StraightBeam secBeam = input.ElementAt(1) as StraightBeam;
//verify some input condition(profile type and alignment)
if (!verifyInputBeams(firstBeam, secBeam))
throw new Exception("Input objects");
if (null != firstBeam)
{
// this is basically some data validation and preparation for avoiding many checks or problems later
Point3d ptBeamStart = firstBeam.GetPointAtStart(0);
Point3d ptBeamEnd = firstBeam.GetPointAtEnd(0);
computeNonFillersData(firstBeam, secBeam);
shortenSecondaryBeam(arrCrOjbInfo, secBeam);
if (0 == _iStaggering || 1 == _iNoBoltAcross)
createBoltsWithoutStager(arrCrOjbInfo, firstBeam, secBeam);
else
createBoltsWithStager(arrCrOjbInfo, firstBeam, secBeam);
}
}
}
catch (Exception ex)
{
Debug.Assert(false, ex.Message);
}
//
// created objects need to be set to the joint
jnt.SetCreatedObjects(arrCrOjbInfo, true);
}
void IRule.GetRulePages(IRuleUIBuilder builder)
{
// ids are the same as for Overlapping flat joint
builder.SheetPromptId = 83088;
builder.FirstPageBitmapIdx = 60728;
// property sheet 1 - "Bolt arrangement"
int nId = builder.BuildRulePage(90559, -1, 60729);
builder.AddTextBox(nId, "Number of along bolts", "_iNoBoltAlong", typeof(int));
builder.AddTextBox(nId, "Intermediate along distance", "_dIntermDistAlong", typeof(double), Autodesk.AdvanceSteel.DotNetRoots.Units.Unit.eUnitType.kDistance);
builder.AddTextBox(nId, "Edge distance member 1", "_dEdgeDistAlong1", typeof(double), Autodesk.AdvanceSteel.DotNetRoots.Units.Unit.eUnitType.kDistance);
builder.AddTextBox(nId, "Edge distance member 2", "_dEdgeDistAlong2", typeof(double), Autodesk.AdvanceSteel.DotNetRoots.Units.Unit.eUnitType.kDistance);
builder.AddSelectorCustom(nId, "Layout Across", "_iLayoutAcross", typeof(int), new string[] { "center", "from side 1", "from side 2" });
builder.AddTextBox(nId, "Number of across bolts", "_iNoBoltAcross", typeof(int));
builder.AddTextBox(nId, "Intermdediate across distance", "_dIntermDistAcross", typeof(double), Autodesk.AdvanceSteel.DotNetRoots.Units.Unit.eUnitType.kDistance);
builder.AddTextBox(nId, "Offset","_dOffsetAcross", typeof(double), Autodesk.AdvanceSteel.DotNetRoots.Units.Unit.eUnitType.kDistance);
builder.AddSelectorCustom(nId, "Staggering", "_iStaggering", typeof(int), new string[] { "none", "side 1", "side 2" });
// property sheet 2 - "Bolt parameter"
nId = builder.BuildRulePage(90041, -1, 60730);
builder.AddTextBox(nId, "Diameter", "_dBoltDiameter", typeof(double), Autodesk.AdvanceSteel.DotNetRoots.Units.Unit.eUnitType.kDistance);
builder.AddBoltSelector(nId, "Bolt properties label", "_sBoltType", "_sBoltGrade", "_dBoltDiameter", "_sBoltSet");
builder.AddCheckBox(nId, "Invert", "_iInvert");
builder.AddSelectorCustom(nId, "Bolt Location", "_iBoltLocation", typeof(int), new string[] { "site", "shop" });
}
string IRule.GetTableName()
{
return "";
}
void IRule.Save(IFiler filer)
{
filer.WriteItem(_iNoBoltAlong, "_iNoBoltAlong");
filer.WriteItem(_dIntermDistAlong, "_dIntermDistAlong");
filer.WriteItem(_dEdgeDistAlong1, "_dEdgeDistAlong1");
filer.WriteItem(_dEdgeDistAlong2, "_dEdgeDistAlong2");
filer.WriteItem(_iLayoutAcross, "_iLayoutAcross");
filer.WriteItem(_iNoBoltAcross, "_iNoBoltAcross");
filer.WriteItem(_dIntermDistAcross, "_dIntermDistAcross");
filer.WriteItem(_dOffsetAcross, "_dOffsetAcross");
filer.WriteItem(_iStaggering, "_iStaggering");
filer.WriteItem(_dBoltDiameter,"_dBoltDiameter");
filer.WriteItem(_sBoltType,"_sBoltType");
filer.WriteItem(_sBoltGrade,"_sBoltGrade");
filer.WriteItem(_sBoltSet,"_sBoltSet");
filer.WriteItem(_iInvert,"_iInvert");
filer.WriteItem(_iBoltLocation,"_iBoltLocation");
}
void IRule.Load(IFiler filer)
{
int version = filer.ReadVersion();
_iNoBoltAlong = (int)filer.ReadItem("_iNoBoltAlong");
_dIntermDistAlong = (double)filer.ReadItem("_dIntermDistAlong");
_dEdgeDistAlong1 = (double)filer.ReadItem("_dEdgeDistAlong1");
_dEdgeDistAlong2 = (double)filer.ReadItem("_dEdgeDistAlong2");
_iLayoutAcross = (int)filer.ReadItem("_iLayoutAcross");
_iNoBoltAcross = (int)filer.ReadItem("_iNoBoltAcross");
_dIntermDistAcross = (double)filer.ReadItem("_dIntermDistAcross");
_dOffsetAcross = (double)filer.ReadItem("_dOffsetAcross");
_iStaggering = (int)filer.ReadItem("_iStaggering");
_dBoltDiameter = (double)filer.ReadItem("_dBoltDiameter");
_sBoltType = (string)filer.ReadItem("_sBoltType");
_sBoltGrade = (string)filer.ReadItem("_sBoltGrade");
_sBoltSet = (string)filer.ReadItem("_sBoltSet");
_iInvert = (int)filer.ReadItem("_iInvert");
_iBoltLocation = (int)filer.ReadItem("_iBoltLocation");
}
void IRule.Query(IUI ui)
{
eUIErrorCodes errCode;
ui.ClassFilter.AppendAcceptedBaseClass(FilerObject.eObjectType.kBeam);
FilerObject fObj1 = ui.SelectObject(666, false, out errCode);
FilerObject fObj2 = ui.SelectObject(666, false, out errCode);
if (null != fObj1 && null != fObj2)
{
IJoint jnt = DatabaseManager.Open(JointId) as IJoint;
if (null != jnt)
{
jnt.SetInputObjects(new FilerObject[] { fObj1, fObj2 }, new int[] { -1, -1 });
}
}
LoadDefaultValues();
}
private void LoadDefaultValues()
{
// property sheet 1 - "Bolt arrangement"
_iNoBoltAlong = 3;
_dIntermDistAlong = 75;
_dEdgeDistAlong1 = 50;
_dEdgeDistAlong2 = 50;
_iLayoutAcross = 0; // 0 = center, 1 = from side 1, 2 = from side 2
_iNoBoltAcross = 3;
_dIntermDistAcross = 75;
_dOffsetAcross = 0;
_iStaggering = 0; // 0 = none, 1 = side 1, 2 = side 2
// property sheet 2 - "Bolt parameter"
string boltStandard = "Norm"; // bolt type
string boltSet = "Garnitur"; //bolt grade
string boltMaterial = "Material"; //assembly
string boltsDiameter = "Diameter";
_sBoltType = AstorSettings.Instance.GetDefaultString(401, boltStandard);
_sBoltSet = AstorSettings.Instance.GetDefaultString(401, boltSet);
_sBoltGrade = AstorSettings.Instance.GetDefaultString(401, boltMaterial);
_dBoltDiameter = AstorSettings.Instance.GetDefaultDouble(401, boltsDiameter); ;
_iInvert = 0;
_iBoltLocation = 0; // 0 = site, 1 = shop
}
private bool verifyInputBeams(Beam beam1, Beam beam2)
{
if (null == beam1 || null == beam2)
return false;
//////////////////////////////////////////////////////////////////////////
// verify if the input beams are both "F" profiles
ProfileType profType;
string strClsName1, strRTLName1,
strClsName2, strRTLName2;
profType = beam1.GetProfType();
profType.GetSectionClass(out strClsName1, out strRTLName1);
profType = beam2.GetProfType();
profType.GetSectionClass(out strClsName2, out strRTLName2);
if (("F" != strClsName1) || ("F" != strClsName2))
return false;
//////////////////////////////////////////////////////////////////////////
// verify if the input beams are parallel
Matrix3d beam1MidCS, beam2MidCS;
Vector3d xAxis1, xAxis2, yAxis1, yAxis2, zAxis1, zAxis2;
Point3d origPct1, origPct2;
beam1MidCS = beam1.PhysCSMid;
beam1MidCS.GetCoordSystem(out origPct1, out xAxis1, out yAxis1, out zAxis1);
beam2MidCS = beam2.PhysCSMid;
beam2MidCS.GetCoordSystem(out origPct2, out xAxis2, out yAxis2, out zAxis2);
Tol eTol = new Tol(1.0e-5, 1.0e-5);
bool bXVectAreParallel = xAxis1.IsParallelTo(xAxis2, eTol);
bool bYVectAreParallel = yAxis1.IsParallelTo(yAxis2, eTol);
if (false == bXVectAreParallel || false == bYVectAreParallel)
return false;
return true;
}
private bool computeNonFillersData(Beam beam1, Beam beam2)
{
bool bResult = true;
//////////////////////////////////////////////////////////////////////////
// create instances
_CS = new Matrix3d();
_vForward = new Vector3d();
_vSide = new Vector3d();
_vUp = new Vector3d();
_Beam2ShorteningEnd = Beam.eEnd.kStart;
_ptOrigin = new Point3d();
//////////////////////////////////////////////////////////////////////////
// get furthest end points for the two beams
// get data from input beams
Point3d ptStart1, ptEnd1, ptStart2, ptEnd2;
Vector3d xAxis, yAxis, zAxis;
Matrix3d csTemp;
csTemp = beam1.PhysCSStart;
csTemp.GetCoordSystem(out ptStart1, out xAxis, out yAxis, out zAxis);
csTemp = beam1.PhysCSEnd;
csTemp.GetCoordSystem(out ptEnd1, out xAxis, out yAxis, out zAxis);
csTemp = beam2.PhysCSStart;
csTemp.GetCoordSystem(out ptStart2, out xAxis, out yAxis, out zAxis);
csTemp = beam2.PhysCSEnd;
csTemp.GetCoordSystem(out ptEnd2, out xAxis, out yAxis, out zAxis);
Vector3d vPt1Pt2 = null;
double dDist = 0.0;
double dDistMax = 10.0;
dDistMax = ptStart2.DistanceTo(ptStart1);
vPt1Pt2 = ptStart2.Subtract(ptStart1);
dDist = ptStart2.DistanceTo(ptEnd1);
if (dDist > dDistMax)
{
vPt1Pt2 = ptStart2.Subtract(ptEnd1);
dDistMax = dDist;
}
dDist = ptEnd2.DistanceTo(ptStart1);
if (dDist > dDistMax)
{
vPt1Pt2 = ptEnd2.Subtract(ptStart1);
dDistMax = dDist;
}
dDist = ptEnd2.DistanceTo(ptEnd1);
if (dDist > dDistMax)
vPt1Pt2 = ptEnd2.Subtract(ptEnd1);
//////////////////////////////////////////////////////////////////////////
// set _ptOrigin as the last point of main beam on vPt1Pt2 direction
List<Point3d> ptsList = new List<Point3d>();
ptsList.Add(ptStart1);
ptsList.Add(ptEnd1);
ptsList.Sort(new Point3dSorter(vPt1Pt2));
_ptOrigin = ptsList[0];
//////////////////////////////////////////////////////////////////////////
// set _Beam2ShorteningEnd as the end from first point of sec beam on vPt1Pt2 direction
ptsList.Clear();
ptsList.Add(ptStart2);
ptsList.Add(ptEnd2);
ptsList.Sort(new Point3dSorter(vPt1Pt2));
_Beam2ShorteningEnd = pointsAreEqual(ptsList[1], ptStart2, 1.0e-5) ? Beam.eEnd.kStart : Beam.eEnd.kEnd;
//////////////////////////////////////////////////////////////////////////
// set vectors
// _vForward is along x axis of main beam, pointing from pt1 towards pt2, where pt1 and pt2 are furthest end points of the two beams
// _vSide is z axis of main beam
// _vUp is along y axis of main beam, computed as cross product between _vForward and _vSide
Matrix3d csMainBeam;
Vector3d vTemp;
Point3d ptOrig;
csMainBeam = beam1.PhysCSMid;
csMainBeam.GetCoordSystem(out ptOrig, out vTemp, out yAxis, out zAxis);
_vForward.Set(vTemp.x, vTemp.y, vTemp.z);
if (null != vPt1Pt2)
{
if(vectorsHaveApproxSameDirection(_vForward,vPt1Pt2))
_vForward = _vForward.Negate();
}
_vSide.Set(zAxis.x, zAxis.y, zAxis.z);
_vUp = _vForward.CrossProduct(_vSide);
//////////////////////////////////////////////////////////////////////////
// set cs
_CS.SetCoordSystem(_ptOrigin, _vForward, _vSide, _vUp);
return bResult;
}
private void shortenSecondaryBeam(List<CreatedObjectInformation> spCreatedObjects, StraightBeam strBeam)
{
//create shortening and add it to the beam
BeamShortening beamShort = new BeamShortening();
Plane planeShort = new Plane(_ptOrigin, _vForward);
Vector3d tmpVect = _vForward;
tmpVect *= _dEdgeDistAlong1 + _dEdgeDistAlong2 + (_iNoBoltAlong - 1) * _dIntermDistAlong;
planeShort.TransformBy(Matrix3d.GetTranslation(tmpVect));
if (0 != _iStaggering && _iNoBoltAcross > 1)
{
Vector3d vect = planeShort.Normal.Normalize();
vect *= _dIntermDistAlong / 2;
planeShort.TransformBy(Matrix3d.GetTranslation(vect));
}
strBeam.AddFeature(beamShort);
beamShort.Set(planeShort.Origin, planeShort.Normal, _Beam2ShorteningEnd);
CreatedObjectInformation coi = new CreatedObjectInformation();
coi.CreatedObject = beamShort;
coi.JointTransferId = "ShortenRole";
coi.Attributes = new eObjectsAttribute[0];
//add the new created object to the joint
spCreatedObjects.Add(coi);
}
private bool pointsAreEqual(Point3d pt1, Point3d pt2, double dTol)
{
bool bResult = true;
double d = Math.Sqrt((pt2.x - pt1.x) * (pt2.x - pt1.x) + (pt2.y - pt1.y) * (pt2.y - pt1.y) + (pt2.z - pt1.z) * (pt2.z - pt1.z));
if (d < dTol)
bResult = true;
else
bResult = false;
return bResult;
}
private bool createBoltsWithoutStager(List<CreatedObjectInformation> spCreatedObjects, StraightBeam beam1, StraightBeam beam2)
{
bool bRet = true;
// get the main beam height
ProfileType beamProfType = beam1.GetProfType();
double dHeight = beamProfType.GetGeometricalData(ProfileType.eCommonData.kProfHeight);
Point3d ptTemp;
movePoint(_ptOrigin, _vForward, _dEdgeDistAlong1 + (_iNoBoltAlong - 1) * _dIntermDistAlong / 2, out ptTemp);
switch (_iLayoutAcross)
{
case 0: // center
movePoint(ptTemp, _vSide, _dOffsetAcross, out ptTemp);
break;
case 1: // from side 1
movePoint(ptTemp, _vSide, -dHeight / 2 + (_iNoBoltAcross - 1) * _dIntermDistAcross / 2 + _dOffsetAcross,out ptTemp);
break;
case 2: // from side 2
movePoint(ptTemp, _vSide, dHeight / 2 - (_iNoBoltAcross - 1) * _dIntermDistAcross / 2 - _dOffsetAcross, out ptTemp);
break;
}
Point3d ptO;
Vector3d vX, vY, vZ;
_CS.GetCoordSystem(out ptO, out vX, out vY, out vZ);
// set model role
string strBoltRole = "Role";
Point3d lowerLeft = ptTemp - (_dIntermDistAlong / 2 * (_iNoBoltAlong - 1)) * vX - (_dIntermDistAcross / 2 * (_iNoBoltAcross - 1)) * vY;
Point3d upperRight = ptTemp + (_dIntermDistAlong / 2 * (_iNoBoltAlong - 1)) * vX + (_dIntermDistAcross / 2 * (_iNoBoltAcross - 1)) * vY;
FinitRectScrewBoltPattern boltPattern = new FinitRectScrewBoltPattern(lowerLeft, upperRight, vX, vY);
boltPattern.Nx = _iNoBoltAlong;
boltPattern.Ny = _iNoBoltAcross;
boltPattern.Standard = _sBoltType;
boltPattern.Grade = _sBoltGrade;
boltPattern.BoltAssembly = _sBoltSet;
boltPattern.ScrewDiameter = _dBoltDiameter;
if (boltPattern != null)
{
if (1 == _iInvert)
boltPattern.IsInverted = true;
boltPattern.WriteToDb();
boltPattern.Connect(new FilerObject[] { beam1, beam2 }, _iBoltLocation == 0 ? AtomicElement.eAssemblyLocation.kOnSite : AtomicElement.eAssemblyLocation.kInShop);
CreatedObjectInformation coi = new CreatedObjectInformation();
coi.CreatedObject = boltPattern;
coi.JointTransferId = strBoltRole;
coi.Attributes = new eObjectsAttribute[0];
spCreatedObjects.Add(coi);
}
return bRet;
}
private bool createBoltsWithStager(List<CreatedObjectInformation> spCreatedObjects, StraightBeam beam1, StraightBeam beam2)
{
bool bRes = true;
// get the main beam height
ProfileType beamProfType = beam1.GetProfType();
double dHeight = beamProfType.GetGeometricalData(ProfileType.eCommonData.kProfHeight);
Point3d ptTemp1, ptTemp2;
if (1 == _iStaggering) // side 1 stagger
{
movePoint(_ptOrigin, _vForward, _dEdgeDistAlong1 + (_iNoBoltAlong - 1) * _dIntermDistAlong / 2,out ptTemp1);
movePoint(_ptOrigin, _vForward, _dEdgeDistAlong1 + _iNoBoltAlong * _dIntermDistAlong / 2,out ptTemp2);
}
else // side 2 stagger
{
movePoint(_ptOrigin, _vForward, _dEdgeDistAlong1 + (_iNoBoltAlong - 1) * _dIntermDistAlong / 2,out ptTemp2);
movePoint(_ptOrigin, _vForward, _dEdgeDistAlong1 + _iNoBoltAlong * _dIntermDistAlong / 2,out ptTemp1);
}
// number of across bolts of each group
int iNoBoltAcross1 = (int)Math.Ceiling((double)_iNoBoltAcross / 2);
int iNoBoltAcross2 = (int)Math.Floor((double)_iNoBoltAcross / 2);
switch (_iLayoutAcross)
{
case 0: // center
if (1 == (_iNoBoltAcross % 2)) // odd number of bolts across
{
movePoint(ptTemp1, _vSide, _dOffsetAcross,out ptTemp1);
movePoint(ptTemp2, _vSide, _dOffsetAcross,out ptTemp2);
}
else // even number of bolts
{
movePoint(ptTemp1, _vSide, _dOffsetAcross - _dIntermDistAcross / 2,out ptTemp1);
movePoint(ptTemp2, _vSide, _dOffsetAcross + _dIntermDistAcross / 2,out ptTemp2);
}
break;
case 1: // from side 1
movePoint(ptTemp1, _vSide, -dHeight / 2 + (iNoBoltAcross1 - 1) * _dIntermDistAcross + _dOffsetAcross,out ptTemp1);
movePoint(ptTemp2, _vSide, -dHeight / 2 + (iNoBoltAcross2) * _dIntermDistAcross + _dOffsetAcross,out ptTemp2);
break;
case 2: // from side 2
movePoint(ptTemp1, _vSide, dHeight / 2 - (iNoBoltAcross1 - 1) * _dIntermDistAcross - _dOffsetAcross,out ptTemp1);
movePoint(ptTemp2, _vSide, dHeight / 2 - (iNoBoltAcross2) * _dIntermDistAcross - _dOffsetAcross,out ptTemp2);
break;
}
// set model role
string strBoltRole;
strBoltRole = "Bolt#1";
Point3d ptO;
Vector3d vX, vY, vZ;
_CS.GetCoordSystem(out ptO, out vX, out vY, out vZ);
Point3d lowerLeft = ptTemp1 - (_dIntermDistAlong / 2.0 * (_iNoBoltAlong - 1)) * vX - (_dIntermDistAcross * (iNoBoltAcross1 - 1)) * vY;
Point3d upperRight = ptTemp1 + (_dIntermDistAlong / 2.0 * (_iNoBoltAlong - 1)) * vX + (_dIntermDistAcross * (iNoBoltAcross1 - 1)) * vY;
//create and add bolts
FinitRectScrewBoltPattern boltPattern1 = new FinitRectScrewBoltPattern(lowerLeft, upperRight, vX, vY);
boltPattern1.Nx = _iNoBoltAlong;
boltPattern1.Ny = iNoBoltAcross1;
boltPattern1.Standard = _sBoltType;
boltPattern1.Grade = _sBoltGrade;
boltPattern1.BoltAssembly = _sBoltSet;
boltPattern1.ScrewDiameter = _dBoltDiameter;
lowerLeft = ptTemp2 - (_dIntermDistAlong / 2.0 * (_iNoBoltAlong - 1)) * vX - (_dIntermDistAcross * (iNoBoltAcross2 - 1)) * vY;
upperRight = ptTemp2 + (_dIntermDistAlong / 2.0 * (_iNoBoltAlong - 1)) * vX + (_dIntermDistAcross * (iNoBoltAcross2 - 1)) * vY;
FinitRectScrewBoltPattern boltPattern2 = new FinitRectScrewBoltPattern(lowerLeft, upperRight, vX, vY);
boltPattern2.Nx = _iNoBoltAlong;
boltPattern2.Ny = iNoBoltAcross2;
boltPattern2.Standard = _sBoltType;
boltPattern2.Grade = _sBoltGrade;
boltPattern2.BoltAssembly = _sBoltSet;
boltPattern2.ScrewDiameter = _dBoltDiameter;
IJoint jnt = DatabaseManager.Open(JointId) as IJoint;
if (boltPattern1 != null && boltPattern2 != null)
{
if (1 == _iInvert)
{
boltPattern1.IsInverted = true;
boltPattern2.IsInverted = true;
}
boltPattern1.WriteToDb();
boltPattern1.Connect(new FilerObject[] { beam1, beam2 }, _iBoltLocation == 0 ? AtomicElement.eAssemblyLocation.kOnSite : AtomicElement.eAssemblyLocation.kInShop);
boltPattern2.WriteToDb();
boltPattern2.Connect(new FilerObject[] { beam1, beam2 }, _iBoltLocation == 0 ? AtomicElement.eAssemblyLocation.kOnSite : AtomicElement.eAssemblyLocation.kInShop);
CreatedObjectInformation coi1 = new CreatedObjectInformation();
coi1.CreatedObject = boltPattern1;
coi1.JointTransferId = strBoltRole;
coi1.Attributes = new eObjectsAttribute[0];
CreatedObjectInformation coi2 = new CreatedObjectInformation();
coi2.CreatedObject = boltPattern2;
coi2.JointTransferId = strBoltRole;
coi2.Attributes = new eObjectsAttribute[0];
spCreatedObjects.Add(coi1);
spCreatedObjects.Add(coi2);
}
return bRes;
}
private int sortPoints(Point3d p1, Point3d p2, Vector3d refVect)
{
Vector3d vectDiff = p2.Subtract(p1);
double dVal = 0.0;
dVal = vectDiff.DotProduct(refVect);
if ((-1.0e-5 < dVal) &&
(dVal < 1.0e-5))
return 0;
else if (dVal < 0)
return -1;
else
return 1;
}
private void movePoint(Point3d pt, Vector3d vect, double dist, out Point3d resPt)
{
//copies ptRes from pt and moves it along vector vect with distance dist
Vector3d vect1 = new Vector3d(vect);
vect1.Normalize();
vect1 *= dist;
resPt = new Point3d(pt.x + vect1.x, pt.y + vect1.y, pt.z + vect1.z);
}
private bool vectorsHaveApproxSameDirection(Vector3d v1, Vector3d v2)
{
if (v1.IsPerpendicularTo(v2))
{
return false;
}
Point3d pt0, pt1, pt2;
pt0 = new Point3d();
movePoint(pt0, v1, 100, out pt1);
List<Point3d> ptsList = new List<Point3d> { pt0, pt1 };
ptsList.Sort(new Point3dSorter(v2));
pt2 = ptsList[0];
double dDist = 0;
dDist = pt2.DistanceTo(pt1);
if (Math.Abs(dDist) > 1.0e-5)
return false;
else
return true;
}
}
public class Point3dSorter : IComparer<Point3d>
{
private Vector3d _sortDir;
public Point3dSorter(Vector3d sortDir)
{
if (sortDir == null)
_sortDir = Vector3d.kXAxis;
_sortDir = sortDir;
}
public int Compare(Point3d a, Point3d b)
{
Point3d p1 = a as Point3d;
Point3d p2 = b as Point3d;
Vector3d vect = p2.Subtract(p1);
double dVal = 0.0;
dVal = vect.DotProduct(_sortDir);
if ((-1.0e-5 < dVal) &&
(dVal < 1.0e-5))
return 0;
else if (dVal < 0)
return -1;
else
return 1;
}
}
}
@@ -0,0 +1,36 @@
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("SampleLapJoint")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("Autodesk, Inc.")]
[assembly: AssemblyProduct("SampleLapJoint")]
[assembly: AssemblyCopyright("Copyright © Autodesk, Inc. 2022")]
[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("770444f5-fc7d-4de5-aa26-71dfc383ae4e")]
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
@@ -0,0 +1,74 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="..\StructuralConnectionsSDKSamples.Common.props" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">x64</Platform>
<ProjectGuid>{C9172C84-3F14-4B43-8FD8-26BD93E27EFC}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>SampleLapJoint</RootNamespace>
<AssemblyName>SampleLapJoint</AssemblyName>
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<Deterministic>true</Deterministic>
<TargetFrameworkProfile />
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'">
<DebugSymbols>true</DebugSymbols>
<OutputPath>..\..\Binaries\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<DebugType>full</DebugType>
<PlatformTarget>x64</PlatformTarget>
<LangVersion>7.3</LangVersion>
<ErrorReport>prompt</ErrorReport>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'">
<OutputPath>..\..\Binaries\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<Optimize>true</Optimize>
<DebugType>pdbonly</DebugType>
<PlatformTarget>x64</PlatformTarget>
<LangVersion>7.3</LangVersion>
<ErrorReport>prompt</ErrorReport>
</PropertyGroup>
<ItemGroup>
<Reference Include="ASCADLinkMgd">
<HintPath>$(ASInstallDir)\ASCADLinkMgd.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="ASGeometryMgd">
<HintPath>$(ASInstallDir)\ASGeometryMgd.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="ASModelerMgd">
<HintPath>$(ASInstallDir)\ASModelerMgd.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="ASObjectsMgd">
<HintPath>$(ASInstallDir)\ASObjectsMgd.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="ASProfilesMgd">
<HintPath>$(ASInstallDir)\ASProfilesMgd.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="DotNetRoots">
<HintPath>$(ASInstallDir)\DotNetRoots.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Net.Http" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="LapJoint.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>
Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

@@ -0,0 +1,36 @@
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("SteelConnectionsDotNetJointExample")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("Autodesk, Inc.")]
[assembly: AssemblyProduct("SteelConnectionsDotNetJointExample")]
[assembly: AssemblyCopyright("Copyright © Autodesk, Inc. 2015")]
[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("451F853E-613F-4C62-9B99-3A8BD58B8043")]
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

@@ -0,0 +1,100 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<Import Project="..\StructuralConnectionsSDKSamples.Common.props" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">x64</Platform>
<ProjectGuid>{451F853E-613F-4C62-9B99-3A8BD58B8043}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>SteelConnectionsDotNetJointExample</RootNamespace>
<AssemblyName>SteelConnectionsDotNetJointExample</AssemblyName>
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<SccProjectName>SAK</SccProjectName>
<SccLocalPath>SAK</SccLocalPath>
<SccAuxPath>SAK</SccAuxPath>
<SccProvider>SAK</SccProvider>
<TargetFrameworkProfile />
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>..\..\Binaries\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<Prefer32Bit>false</Prefer32Bit>
<PlatformTarget>x64</PlatformTarget>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>..\..\Binaries\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<Prefer32Bit>false</Prefer32Bit>
<PlatformTarget>x64</PlatformTarget>
</PropertyGroup>
<ItemGroup>
<Reference Include="ASObjectsMgd">
<SpecificVersion>False</SpecificVersion>
<HintPath>$(ASInstallDir)\ASObjectsMgd.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="ASGeometryMgd">
<SpecificVersion>False</SpecificVersion>
<HintPath>$(ASInstallDir)\ASGeometryMgd.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="ASCADLinkMgd">
<SpecificVersion>False</SpecificVersion>
<HintPath>$(ASInstallDir)\ASCADLinkMgd.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="DotNetRoots">
<HintPath>$(ASInstallDir)\DotNetRoots.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="DotNetRootsMgd">
<HintPath>$(ASInstallDir)\DotNetRootsMgd.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="PresentationCore" />
<Reference Include="PresentationFramework" />
<Reference Include="System.Drawing" />
<Reference Include="System.Xaml" />
<Reference Include="WindowsBase" />
</ItemGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Net.Http" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="BridgeGirderSample.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="Dummy.png" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="Resources\ResDummy.png" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.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>
-->
</Project>
@@ -0,0 +1,97 @@
<?xml version="1.0" encoding="utf-8"?>
<PaletteData Version="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<ResourceDll>SteelConnectionsDotNetJointExample.dll</ResourceDll>
<PreviewResourceDll>SteelConnectionsDotNetJointExample.dll</PreviewResourceDll>
<Categories>
<PaletteCategory>
<Name>Plates at beam</Name>
<Image>ResDummy.png</Image>
<Items>
<PaletteItem>
<Description>Steel Connections Sample Joint</Description>
<Command>SteelConnectionsJointExample</Command>
<PreviewText>This is my test joint</PreviewText>
<Images>
<string>Dummy.png</string>
</Images>
<PreviewImages>
<string>ResDummy.png</string>
</PreviewImages>
<TypeId>E8BB9834-E1A2-4644-9C59-1C9812C04E8E</TypeId>
</PaletteItem>
</Items>
</PaletteCategory>
<PaletteCategory>
<Name>Net joint</Name>
<Image>ResDummy.png</Image>
<Items>
<PaletteItem>
<Description>Bridge Girder DotNet Example</Description>
<Command>BridgeGirderSample</Command>
<PreviewText>This is my test joint 2</PreviewText>
<Images>
<string>Dummy.png</string>
</Images>
<PreviewImages>
<string>ResDummy.png</string>
</PreviewImages>
<TypeId>36c78249-132f-4037-9822-3802a5cf9345</TypeId>
</PaletteItem>
</Items>
</PaletteCategory>
<PaletteCategory>
<Name>Net joint</Name>
<Image>ResDummy.png</Image>
<Items>
<PaletteItem>
<Description>Lap Joint Example</Description>
<Command>LapJoint</Command>
<PreviewText>This is my Lap joint</PreviewText>
<Images>
<string>Dummy.png</string>
</Images>
<PreviewImages>
<string>ResDummy.png</string>
</PreviewImages>
<TypeId>B2E820AB-A8BD-4998-878C-1BE4364B1BD9</TypeId>
</PaletteItem>
</Items>
</PaletteCategory>
<PaletteCategory>
<Name>Net joint clip angle</Name>
<Image>ResDummy.png</Image>
<Items>
<PaletteItem>
<Description>Steel Connections Clip Angle Example</Description>
<Command>SampleClipAngle</Command>
<PreviewText>This is my test joint 3</PreviewText>
<Images>
<string>Dummy.png</string>
</Images>
<PreviewImages>
<string>ResDummy.png</string>
</PreviewImages>
<TypeId>8B4FDDC8-946A-49B4-AF65-AC54C5615AB1</TypeId>
</PaletteItem>
</Items>
</PaletteCategory>
<PaletteCategory>
<Name>Native Sample Clip Angle</Name>
<Image>ResDummy.png</Image>
<Items>
<PaletteItem>
<Description>Steel Connections Native Clip Angle</Description>
<Command>SampleClipAngleNative</Command>
<PreviewText>C++ Native Clip Angle Example</PreviewText>
<Images>
<string>Dummy.png</string>
</Images>
<PreviewImages>
<string>ResDummy.png</string>
</PreviewImages>
<TypeId>FD62E6AB-0412-4F2B-9DB8-C5D5385F8042</TypeId>
</PaletteItem>
</Items>
</PaletteCategory>
</Categories>
</PaletteData>
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<ASInstallDir>C:\Program Files\Autodesk\Revit 2024\AddIns\SteelConnections\</ASInstallDir>
</PropertyGroup>
</Project>
@@ -0,0 +1,55 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.0.32014.148
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SteelConnectionsJointExample", "SampleJoint\SteelConnectionsJointExample.csproj", "{0D5537D0-19F6-40A0-B5C6-852210AE6983}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SampleDesign", "SampleDesign\SampleDesign.csproj", "{9CE75523-141E-4F65-8F96-71E2A9C826E2}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SteelConnectionsDotNetJointExample", "SteelConnectionsNetJoints\SteelConnectionsDotNetJointExample.csproj", "{451F853E-613F-4C62-9B99-3A8BD58B8043}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SampleClipAngle", "SampleClipAngle\SampleClipAngle.csproj", "{8CFF2BFD-0E4D-4A20-95F4-C1FD4BDF0703}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SampleClipAngleNative", "SampleClipAngleNative\SampleClipAngleNative.vcxproj", "{42DEBBF6-6FA4-4FEC-97A4-C6A0C994A4FC}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SampleLapJoint", "SampleLapJoint\SampleLapJoint.csproj", "{C9172C84-3F14-4B43-8FD8-26BD93E27EFC}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|x64 = Debug|x64
Release|x64 = Release|x64
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{0D5537D0-19F6-40A0-B5C6-852210AE6983}.Debug|x64.ActiveCfg = Debug|x64
{0D5537D0-19F6-40A0-B5C6-852210AE6983}.Debug|x64.Build.0 = Debug|x64
{0D5537D0-19F6-40A0-B5C6-852210AE6983}.Release|x64.ActiveCfg = Release|x64
{0D5537D0-19F6-40A0-B5C6-852210AE6983}.Release|x64.Build.0 = Release|x64
{9CE75523-141E-4F65-8F96-71E2A9C826E2}.Debug|x64.ActiveCfg = Debug|x64
{9CE75523-141E-4F65-8F96-71E2A9C826E2}.Debug|x64.Build.0 = Debug|x64
{9CE75523-141E-4F65-8F96-71E2A9C826E2}.Release|x64.ActiveCfg = Release|x64
{9CE75523-141E-4F65-8F96-71E2A9C826E2}.Release|x64.Build.0 = Release|x64
{451F853E-613F-4C62-9B99-3A8BD58B8043}.Debug|x64.ActiveCfg = Debug|x64
{451F853E-613F-4C62-9B99-3A8BD58B8043}.Debug|x64.Build.0 = Debug|x64
{451F853E-613F-4C62-9B99-3A8BD58B8043}.Release|x64.ActiveCfg = Release|x64
{451F853E-613F-4C62-9B99-3A8BD58B8043}.Release|x64.Build.0 = Release|x64
{8CFF2BFD-0E4D-4A20-95F4-C1FD4BDF0703}.Debug|x64.ActiveCfg = Debug|x64
{8CFF2BFD-0E4D-4A20-95F4-C1FD4BDF0703}.Debug|x64.Build.0 = Debug|x64
{8CFF2BFD-0E4D-4A20-95F4-C1FD4BDF0703}.Release|x64.ActiveCfg = Release|x64
{8CFF2BFD-0E4D-4A20-95F4-C1FD4BDF0703}.Release|x64.Build.0 = Release|x64
{42DEBBF6-6FA4-4FEC-97A4-C6A0C994A4FC}.Debug|x64.ActiveCfg = Debug|x64
{42DEBBF6-6FA4-4FEC-97A4-C6A0C994A4FC}.Debug|x64.Build.0 = Debug|x64
{42DEBBF6-6FA4-4FEC-97A4-C6A0C994A4FC}.Release|x64.ActiveCfg = Release|x64
{42DEBBF6-6FA4-4FEC-97A4-C6A0C994A4FC}.Release|x64.Build.0 = Release|x64
{C9172C84-3F14-4B43-8FD8-26BD93E27EFC}.Debug|x64.ActiveCfg = Debug|x64
{C9172C84-3F14-4B43-8FD8-26BD93E27EFC}.Debug|x64.Build.0 = Debug|x64
{C9172C84-3F14-4B43-8FD8-26BD93E27EFC}.Release|x64.ActiveCfg = Release|x64
{C9172C84-3F14-4B43-8FD8-26BD93E27EFC}.Release|x64.Build.0 = Release|x64
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {726E4B0D-553A-449D-8A70-52CEBD052B3D}
EndGlobalSection
EndGlobal