    

 ## On this page

  

 

 # Class Coupler

 Last update: 16.07.2025 

Namespace: [VM.Managed.DAFUL.Constraints](VM.Managed.DAFUL.Constraints.md)  
Assembly: VMDCP.dll

This class is to represent the coupler.

```csharp
public class Coupler : CouplerBase<PropertyCoupler>, IObservableObject, IDisposableObject, ILinkable, ILinkContainerEvent, IVerifiable, IHistoryObjectSerializable, IAttributeContainer, IContainer, IEntity, IEntityBase, IObjectBase, IObject, ILinkContainer, IOwned, IHasID, IEventProvider, IHasKeyObject, IHasName, IEnabled, IHasComment, IVisible, IDocumentOwner, INamed, INavigatorItem, IVisible, IMultiChangable, IHasProperty, IGroup, IEnableForSimulationScenario, IDraw, IDrawIcon, IArgument, ITemplateObject, IEntityRelation

```

#### Inheritance

[object](https://learn.microsoft.com/dotnet/api/system.object) ← ObservableObject ← LinkableBase ← ObjectBase ← Object&lt;EntityEventCore&gt; ← ContainerObject&lt;EntityEventCore&gt; ← EntityBase ← Entity&lt;PropertyCoupler&gt; ← [CouplerBase&lt;PropertyCoupler&gt;](VM.Managed.DAFUL.Constraints.CouplerBase-1.md) ← [Coupler](VM.Managed.DAFUL.Constraints.Coupler.md)

#### Implements

IObservableObject, IDisposableObject, ILinkable, ILinkContainerEvent, IVerifiable, IHistoryObjectSerializable, IAttributeContainer, IContainer, IEntity, IEntityBase, IObjectBase, IObject, ILinkContainer, IOwned, IHasID, IEventProvider, IHasKeyObject, IHasName, IEnabled, IHasComment, IVisible, IDocumentOwner, INamed, INavigatorItem, IVisible, IMultiChangable, IHasProperty, IGroup, IEnableForSimulationScenario, IDraw, IDrawIcon, IArgument, ITemplateObject, IEntityRelation

#### Inherited Members

[CouplerBase&lt;PropertyCoupler&gt;.m\_bSkipToUpdateSymmetric](VM.Managed.DAFUL.Constraints.CouplerBase-1.md#VM_Managed_DAFUL_Constraints_CouplerBase_1_m_bSkipToUpdateSymmetric), [CouplerBase&lt;PropertyCoupler&gt;.LinkRequestUpdate(object, LinkEventArgs)](VM.Managed.DAFUL.Constraints.CouplerBase-1.md#VM_Managed_DAFUL_Constraints_CouplerBase_1_LinkRequestUpdate_System_Object_VM_Managed_LinkEventArgs_), [CouplerBase&lt;PropertyCoupler&gt;.GetModelNavigatorInformationImpl(XmlDocument, XmlElement, bool)](VM.Managed.DAFUL.Constraints.CouplerBase-1.md#VM_Managed_DAFUL_Constraints_CouplerBase_1_GetModelNavigatorInformationImpl_System_Xml_XmlDocument_System_Xml_XmlElement_System_Boolean_), [CouplerBase&lt;PropertyCoupler&gt;.Draw(Canvas)](VM.Managed.DAFUL.Constraints.CouplerBase-1.md#VM_Managed_DAFUL_Constraints_CouplerBase_1_Draw_VM_CAD_Kernel_Render_Canvas_), [CouplerBase&lt;PropertyCoupler&gt;.ReDraw()](VM.Managed.DAFUL.Constraints.CouplerBase-1.md#VM_Managed_DAFUL_Constraints_CouplerBase_1_ReDraw), [CouplerBase&lt;PropertyCoupler&gt;.WriteTemplateImpl(XmlWriter)](VM.Managed.DAFUL.Constraints.CouplerBase-1.md#VM_Managed_DAFUL_Constraints_CouplerBase_1_WriteTemplateImpl_System_Xml_XmlWriter_), [CouplerBase&lt;PropertyCoupler&gt;.ReadTemplateImpl(XmlReader)](VM.Managed.DAFUL.Constraints.CouplerBase-1.md#VM_Managed_DAFUL_Constraints_CouplerBase_1_ReadTemplateImpl_System_Xml_XmlReader_), [CouplerBase&lt;PropertyCoupler&gt;.GetChildListImpl()](VM.Managed.DAFUL.Constraints.CouplerBase-1.md#VM_Managed_DAFUL_Constraints_CouplerBase_1_GetChildListImpl), [CouplerBase&lt;PropertyCoupler&gt;.Joint1](VM.Managed.DAFUL.Constraints.CouplerBase-1.md#VM_Managed_DAFUL_Constraints_CouplerBase_1_Joint1), [CouplerBase&lt;PropertyCoupler&gt;.Joint1\_FullName](VM.Managed.DAFUL.Constraints.CouplerBase-1.md#VM_Managed_DAFUL_Constraints_CouplerBase_1_Joint1_FullName), [CouplerBase&lt;PropertyCoupler&gt;.Joint2](VM.Managed.DAFUL.Constraints.CouplerBase-1.md#VM_Managed_DAFUL_Constraints_CouplerBase_1_Joint2), [CouplerBase&lt;PropertyCoupler&gt;.Joint2\_FullName](VM.Managed.DAFUL.Constraints.CouplerBase-1.md#VM_Managed_DAFUL_Constraints_CouplerBase_1_Joint2_FullName), [CouplerBase&lt;PropertyCoupler&gt;.JointType1](VM.Managed.DAFUL.Constraints.CouplerBase-1.md#VM_Managed_DAFUL_Constraints_CouplerBase_1_JointType1), [CouplerBase&lt;PropertyCoupler&gt;.JointType2](VM.Managed.DAFUL.Constraints.CouplerBase-1.md#VM_Managed_DAFUL_Constraints_CouplerBase_1_JointType2), [CouplerBase&lt;PropertyCoupler&gt;.HasLayerExplicitly](VM.Managed.DAFUL.Constraints.CouplerBase-1.md#VM_Managed_DAFUL_Constraints_CouplerBase_1_HasLayerExplicitly), [CouplerBase&lt;PropertyCoupler&gt;.Hide](VM.Managed.DAFUL.Constraints.CouplerBase-1.md#VM_Managed_DAFUL_Constraints_CouplerBase_1_Hide), [CouplerBase&lt;PropertyCoupler&gt;.ReferenceType](VM.Managed.DAFUL.Constraints.CouplerBase-1.md#VM_Managed_DAFUL_Constraints_CouplerBase_1_ReferenceType), [CouplerBase&lt;PropertyCoupler&gt;.ArgumentType](VM.Managed.DAFUL.Constraints.CouplerBase-1.md#VM_Managed_DAFUL_Constraints_CouplerBase_1_ArgumentType), Entity&lt;PropertyCoupler&gt;.Initialize(Unit.ConvertFactor), Entity&lt;PropertyCoupler&gt;.GetUnnamedObjectName(object), Entity&lt;PropertyCoupler&gt;.FindLocal(string), Entity&lt;PropertyCoupler&gt;.Property, EntityBase.Initialize(Unit.ConvertFactor), EntityBase.SetOldNameWithNewEntity(ObjectBase, ObjectBase), EntityBase.PropertyRequestUpdate(object, LinkEventArgs), EntityBase.OnDeserializationForAttribute(), EntityBase.OnUpdatePropertyImpl(Property, LinkEventArgs), EntityBase.LinkRequestDestroying(object, LinkEventArgs), EntityBase.GetModelNavigatorInformationImpl(XmlDocument, XmlElement, bool), EntityBase.FixUp(ObjectBase), EntityBase.FindLocal(string), EntityBase.WriteTemplateImpl(XmlWriter), EntityBase.ReadTemplateImpl(XmlReader), EntityBase.LinkAddedToDocument(object, AddToDocEventArgs), EntityBase.OnDeserialization(object), EntityBase.Name, EntityBase.FullName, EntityBase.NonSymmetricName, EntityBase.DisplayName, EntityBase.IsEnabled, EntityBase.Comment, EntityBase.HasLayerExplicitly, EntityBase.UntypedProperty, EntityBase.IsFileProperty, EntityBase.Layer, EntityBase.IsVisible, ContainerObject&lt;EntityEventCore&gt;.Find(string), ContainerObject&lt;EntityEventCore&gt;.FindLocal(string), ContainerObject&lt;EntityEventCore&gt;.GetUnnamedObjectName(object), ContainerObject&lt;EntityEventCore&gt;.GetNewEntityName(string), ContainerObject&lt;EntityEventCore&gt;.GetNewEntityName(string, bool, int), ContainerObject&lt;EntityEventCore&gt;.GetNewEntityName(string, bool, int, int), Object&lt;EntityEventCore&gt;.GetKey(), Object&lt;EntityEventCore&gt;.Initialize(Unit.ConvertFactor), Object&lt;EntityEventCore&gt;.SetIconColor(Canvas), Object&lt;EntityEventCore&gt;.OnDeserialization(object), Object&lt;EntityEventCore&gt;.CustomGetObjectData(SerializationInfo, StreamingContext), Object&lt;EntityEventCore&gt;.RollbackEvent(), Object&lt;EntityEventCore&gt;.OnDeserializedCore(object), Object&lt;EntityEventCore&gt;.Key, Object&lt;EntityEventCore&gt;.UntypedEventCore, Object&lt;EntityEventCore&gt;.EventCore, Object&lt;EntityEventCore&gt;.Attributes, ObjectBase.ReplaceEventCore(ObjectEventCore), ObjectBase.SetModifiedCore(ModifiedResult.ModifiedType), ObjectBase.AddPostDeserialize(StreamingContext), ObjectBase.LinkAddedToDocumentCore(IOwned, bool), ObjectBase.SetModified(ModifiedResult.ModifiedType), ObjectBase.SetModified(), ObjectBase.SetModified(ModifiedResult.ModifiedType, IDocument), ObjectBase.DestroyObject(object, LinkEventArgs), ObjectBase.DestroyObject(DestroyEventArgs), ObjectBase.DestroyObject(), ObjectBase.Initialize(Unit.ConvertFactor), ObjectBase.FixUp(ObjectBase), ObjectBase.DoWorkAfterUpdateContents(), ObjectBase.SetOldNameWithNewEntity(ObjectBase, ObjectBase), ObjectBase.SetIconColor(Canvas), ObjectBase.RemoveFromCreatedList(), ObjectBase.PostAddToDocument(), ObjectBase.PostRemoveFromDocument(Document), ObjectBase.GetArgumentList(LinkedList&lt;ObjectBase&gt;), ObjectBase.ResetInvalidEntity(), ObjectBase.OnDeserialization(object), ObjectBase.IsSerializableEvent(Delegate), ObjectBase.CustomGetObjectData(SerializationInfo, StreamingContext), ObjectBase.CheckAndUpdateLink(HashSet&lt;ObjectBase&gt;), ObjectBase.Verify(VerifiedResult), ObjectBase.ConnectProxy(), ObjectBase.RollbackEvent(), ObjectBase.LinkRequestUpdating(object, LinkEventArgs), ObjectBase.LinkRequestUpdate(object, LinkEventArgs), ObjectBase.LinkRequestDestroying(object, LinkEventArgs), ObjectBase.LinkRequestDestroy(object, LinkEventArgs), ObjectBase.LinkAddedToDocument(object, AddToDocEventArgs), ObjectBase.LinkRemovedFromDocument(object, RemoveFromDocEventArgs), ObjectBase.DisposeManagedResources(), ObjectBase.GetDestroyEventExtraData(), ObjectBase.OnLinkReserved(ILink, object, EventArgs), ObjectBase.CreateEntityWhenUpdateContents(Action), ObjectBase.GetObjectByKey(UIntPtr), ObjectBase.FindObjectOnXmlDeserialize(string), ObjectBase.UpdateContents(XmlReader, ObjectBase, string), ObjectBase.UpdateContents(XmlReader, ObjectBase), ObjectBase.UpdateContents(string, string), ObjectBase.UpdateContents(string), ObjectBase.SetFlagWhenXMLFile(string, bool), ObjectBase.IsEqualArray&lt;T&gt;(T\[\], T\[\]), ObjectBase.IsEqualList(List&lt;double&gt;, List&lt;double&gt;), ObjectBase.SetContainer(IOwned, bool), ObjectBase.GetTargetListForUpdate(), ObjectBase.SkipUpdateObjectImpl(), ObjectBase.raise\_OnUpdating(object, LinkEventArgs), ObjectBase.raise\_OnUpdate(object, LinkEventArgs), ObjectBase.raise\_OnDestroying(object, LinkEventArgs), ObjectBase.raise\_OnDestroy(object, LinkEventArgs), ObjectBase.raise\_Destroying(object, Identifier), ObjectBase.raise\_OnAdded(object, AddToDocEventArgs), ObjectBase.raise\_OnRemoved(object, RemoveFromDocEventArgs), ObjectBase.raise\_OnContentsUpdated(object, EventArgs), ObjectBase.Dispose(bool), ObjectBase.SkipModified, ObjectBase.ClearChildInfoBeforeDeserialize, ObjectBase.KeyImpl, ObjectBase.ID, ObjectBase.TopologyEntityTypeName, ObjectBase.ObjectStateForCircularError, ObjectBase.ObjectState, ObjectBase.IsChildExternable, ObjectBase.IsExternable, ObjectBase.Container, ObjectBase.Owner, ObjectBase.Document, ObjectBase.UntypedEventCore, ObjectBase.KernelKey, ObjectBase.Key, ObjectBase.OnContentsUpdated, ObjectBase.OnRemoved, ObjectBase.OnAdded, ObjectBase.Destroying, ObjectBase.OnDestroy, ObjectBase.OnDestroying, ObjectBase.OnUpdate, ObjectBase.OnUpdating, LinkableBase.OnDeserialization(object), ObservableObject.Dispose(), ObservableObject.RaisePropertyChanged(string), ObservableObject.RaisePropertyChanged(string, object, object), ObservableObject.Dispose(bool), ObservableObject.DisposeManagedResources(), ObservableObject.DisposeUnmanagedResources(), ObservableObject.IsDisposed, ObservableObject.TryDisposing, ObservableObject.Disposed, ObservableObject.Disposing, ObservableObject.PropertyChanged

#### Extension Methods

[LinkPropertyItemCache.GetLinkProperties(object, LinkPropertyType)](VM.Models.Pre.Cache.LinkPropertyItemCache.md#VM_Models_Pre_Cache_LinkPropertyItemCache_GetLinkProperties_System_Object_VM_Models_Pre_LinkPropertyType_), [LinkPropertyItemCache.GetLinkPropertiesAndValues(object, LinkPropertyType)](VM.Models.Pre.Cache.LinkPropertyItemCache.md#VM_Models_Pre_Cache_LinkPropertyItemCache_GetLinkPropertiesAndValues_System_Object_VM_Models_Pre_LinkPropertyType_), [LinkPropertyItemCache.GetLinkedObjects&lt;T&gt;(object, LinkPropertyType)](VM.Models.Pre.Cache.LinkPropertyItemCache.md#VM_Models_Pre_Cache_LinkPropertyItemCache_GetLinkedObjects__1_System_Object_VM_Models_Pre_LinkPropertyType_)

## Constructors

### Coupler()

Initializes a new instance of the  class.

```csharp
public Coupler()

```

### Coupler(string)

Initializes a new instance of the  class.

```csharp
public Coupler(string strName)

```

#### Parameters

`strName` [string](https://learn.microsoft.com/dotnet/api/system.string)

Name of the coupler.

## Properties

### Joint3

Gets or sets the third joint.

```csharp
public ObjectBase Joint3 { get; set; }

```

#### Property Value

ObjectBase

### Joint3\_FullName

Gets the full name of the third joint.

```csharp
public string Joint3_FullName { get; }

```

#### Property Value

[string](https://learn.microsoft.com/dotnet/api/system.string)

### JointType3

Gets or sets the third joint type.

```csharp
public CouplerBase<PropertyCoupler>.JointType JointType3 { get; set; }

```

#### Property Value

[CouplerBase](VM.Managed.DAFUL.Constraints.CouplerBase-1.md)&lt;[PropertyCoupler](VM.Managed.DAFUL.Constraints.PropertyCoupler.md)&gt;.[JointType](VM.Managed.DAFUL.Constraints.CouplerBase-1.JointType.md)

### NumOfJoint

Gets or sets the number of joint.

```csharp
public int NumOfJoint { get; set; }

```

#### Property Value

[int](https://learn.microsoft.com/dotnet/api/system.int32)

## Methods

### Draw(Canvas)

Draws the icon.

```csharp
public override void Draw(Canvas canvas)

```

#### Parameters

`canvas` Canvas

The canvas has icon information.

### GetChildListImpl()

get child list

```csharp
protected override IEnumerable<ObjectBase> GetChildListImpl()

```

#### Returns

[IEnumerable](https://learn.microsoft.com/dotnet/api/system.collections.generic.ienumerable-1)&lt;ObjectBase&gt;

### GetModelNavigatorInformationImpl(XmlDocument, XmlElement, bool)

Gets the object information for model navigator \[implementation\].

```csharp
protected override bool GetModelNavigatorInformationImpl(XmlDocument xmlDom, XmlElement xmlEle, bool bHasChild)

```

#### Parameters

`xmlDom` [XmlDocument](https://learn.microsoft.com/dotnet/api/system.xml.xmldocument)

The XmlDocument for object.

`xmlEle` [XmlElement](https://learn.microsoft.com/dotnet/api/system.xml.xmlelement)

The XmlElement for object.

`bHasChild` [bool](https://learn.microsoft.com/dotnet/api/system.boolean)

if set to `true` \[has child\].

#### Returns

[bool](https://learn.microsoft.com/dotnet/api/system.boolean)

`true` if success; otherwise, `false`.

### Initialize(ConvertFactor)

Initializes member through unit convert factor.

```csharp
public override void Initialize(Unit.ConvertFactor factor)

```

#### Parameters

`factor` Unit.ConvertFactor

The unit convert factor.

### LinkRequestUpdate(object, LinkEventArgs)

Request for update the linked object.

```csharp
protected override void LinkRequestUpdate(object objNotifier, LinkEventArgs arg)

```

#### Parameters

`objNotifier` [object](https://learn.microsoft.com/dotnet/api/system.object)

The linked object.

`arg` LinkEventArgs

The  instance containing the event data.

### ReDraw()

Redraw.

```csharp
public override void ReDraw()

```

### ReadTemplateImpl(XmlReader)

Reads the template document \[implementation\].

```csharp
protected override void ReadTemplateImpl(XmlReader reader)

```

#### Parameters

`reader` [XmlReader](https://learn.microsoft.com/dotnet/api/system.xml.xmlreader)

The reader.

### WriteTemplateImpl(XmlWriter)

Writes the template document \[implementation\].

```csharp
protected override void WriteTemplateImpl(XmlWriter writer)

```

#### Parameters

`writer` [XmlWriter](https://learn.microsoft.com/dotnet/api/system.xml.xmlwriter)

The writer.