public MetaLinkProtobuf.Edit AddComponentProtoBufMsg(CyPhyML.ComponentRef componentRef) { CyPhyML.Component component = componentRef.Referred.Component; CyPhyML.CADModel creocadmodel = null; string creomodelname = ""; string creomodeltype = ""; #if DEBUG GMEConsole.Info.WriteLine("AVM: " + component.Attributes.AVMID + " InstanceGUID: " + component.Attributes.InstanceGUID + " Rev: " + component.Attributes.Revision + " Ver: " + component.Attributes.Version); #endif creocadmodel = CyphyMetaLinkUtils.FindCADModelObject(component); if (creocadmodel == null) { GMEConsole.Warning.WriteLine("[" + component.Name + "] is missing a Creo CADModel object!"); return null; } // [1] List<CyPhyML.Resource> Resource_L = new List<CyPhyML.Resource>(); foreach (var item in creocadmodel.DstConnections.UsesResourceCollection) Resource_L.Add(item.DstEnds.Resource); foreach (var item in creocadmodel.SrcConnections.UsesResourceCollection) Resource_L.Add(item.SrcEnds.Resource); if (Resource_L.Count > 0) { creomodelname = Resource_L.First().Attributes.Path; } else { creomodelname = ""; #if DEBUG GMEConsole.Warning.WriteLine("[" + component.Name + "] is not connected to a Resource, therefore does not have a Creo model name."); #endif } if (creomodelname != "") creomodelname = Path.GetFileNameWithoutExtension(creomodelname); // [2] creomodeltype = creocadmodel.Attributes.FileType.ToString().ToUpper(); MetaLinkProtobuf.CADComponentType Component_msg = new MetaLinkProtobuf.CADComponentType { ComponentID = componentRef.Attributes.InstanceGUID, AvmComponentID = component.Attributes.AVMID, Type = creomodeltype, Name = creomodelname, ParametricParameters = new MetaLinkProtobuf.ParametricParametersType(), DisplayName = componentRef.Name }; // [4] InstanceIDToConstraint_Table[componentRef.Attributes.InstanceGUID] = 0; // [5] foreach (var param in creocadmodel.Children.CADParameterCollection) { MetaLinkProtobuf.CADParameterType CADParameter_msg = new MetaLinkProtobuf.CADParameterType { Name = (param.Attributes.ParameterName == "") ? param.Name : param.Attributes.ParameterName, Type = param.Attributes.CADParameterType.ToString(), Value = (param.Attributes.Value == "") ? (param.Attributes.DefaultValue == "") ? "0" : param.Attributes.DefaultValue : param.Attributes.Value }; Component_msg.ParametricParameters.CADParameter.Add(CADParameter_msg); } foreach (var connector in component.Children.ConnectorCollection) { Component_msg.Connectors.Add(new MetaLinkProtobuf.ConnectorType(){ ID = connector.Guid.ToString(), DisplayName = connector.Name }); } MetaLinkProtobuf.Payload Payload_msg = new MetaLinkProtobuf.Payload(); Payload_msg.components.Add(Component_msg); MetaLinkProtobuf.Action Action_msg = new MetaLinkProtobuf.Action { actionMode = MetaLinkProtobuf.Action.ActionMode.REPLACE, payload = Payload_msg }; MetaLinkProtobuf.Edit Edit_msg = new MetaLinkProtobuf.Edit { editMode = MetaLinkProtobuf.Edit.EditMode.POST, guid = Guid.NewGuid().ToString(), sequence = 0, }; Edit_msg.origin.Add(GMEOrigin); Edit_msg.actions.Add(Action_msg); Edit_msg.topic.Add(CadAssemblyTopic); Edit_msg.topic.Add(AssemblyID); return Edit_msg; }
} // end function #region PROTOBUF protected MetaLinkProtobuf.Edit ModifyCADParameterProtoBufMsg(string in_ComponentInstanceID, CADParameter in_CADParameter) { MetaLinkProtobuf.ParametricParametersType ParametricParameters = new MetaLinkProtobuf.ParametricParametersType() { ComponentID = in_ComponentInstanceID }; MetaLinkProtobuf.CADParameterType CADParameter_msg = new MetaLinkProtobuf.CADParameterType { Name = in_CADParameter.Name, Type = in_CADParameter.Type, Value = in_CADParameter.Value }; ParametricParameters.CADParameter.Add(CADParameter_msg); MetaLinkProtobuf.Payload Payload_msg = new MetaLinkProtobuf.Payload(); Payload_msg.parameters.Add(ParametricParameters); MetaLinkProtobuf.Action Action_msg = new MetaLinkProtobuf.Action { actionMode = MetaLinkProtobuf.Action.ActionMode.REPLACE, payload = Payload_msg }; MetaLinkProtobuf.Edit Edit_msg = new MetaLinkProtobuf.Edit { editMode = MetaLinkProtobuf.Edit.EditMode.POST, guid = Guid.NewGuid().ToString(), sequence = 0, }; Edit_msg.origin.Add(GMEOrigin); Edit_msg.actions.Add(Action_msg); Edit_msg.topic.Add(CadAssemblyTopic); Edit_msg.topic.Add(AssemblyID); return Edit_msg; }