/*****************************************************************************************/ /*****************************************************************************************/ // Pre-Processor Assembly private void button3_Click_1(object sender, EventArgs e) { int constraint_num = 0; ConstraintInfo[] a1_constraint = new ConstraintInfo[100]; //조만간 제거할거임. //Assembly file: bring CATScript and address string CATAssem = CATScriptOpenDialog(); //Assembly CATScript address -> 수정필요 if (CATAssem == "") { return; } string folder_address = CATAssem.Substring(0, CATAssem.LastIndexOf("\\")); Console.WriteLine(folder_address); //Assembly folder address. string line; string search2 = "AddBiEltCst"; //Part file: bring address of parts folder string CATAssem2 = CATScriptOpenDialog(); //-> 수정 필요 if (CATAssem2 == "") { return; } string folder_address_parts = CATAssem2.Substring(0, CATAssem2.LastIndexOf("\\")); Console.WriteLine(folder_address_parts); //part folder address. //constraint type parsing //조만간 지울거임. using (StreamReader sr = new StreamReader(CATAssem, System.Text.Encoding.Default)) { while ((line = sr.ReadLine()) != null) { if (line.Length > 10) //수정 가능 { if (line.IndexOf(search2) != -1) { //constraint type parsing a1_constraint[constraint_num].type = line.Substring(line.IndexOf("(") + 1, line.IndexOf(",") - line.IndexOf("(") - 1); //Console.WriteLine(a1_constraint[constraint_num].type); //master_ref parsing(numbering) a1_constraint[constraint_num].master_ref = line.Substring(line.IndexOf(",") + 2, line.LastIndexOf(",") - line.IndexOf(",") - 2); //Console.WriteLine(a1_constraint[constraint_num].master_ref); //slave_ref parsing(numbering) a1_constraint[constraint_num].slave_ref = line.Substring(line.LastIndexOf(",") + 2, line.IndexOf(")") - line.LastIndexOf(",") - 2); //Console.WriteLine(a1_constraint[constraint_num].slave_ref); //number of constraints constraint_num++; } } } } // reparsing master_ref, slave_ref(contents) //조만간 지울거임. using (StreamReader sr = new StreamReader(CATAssem, System.Text.Encoding.Default)) { while ((line = sr.ReadLine()) != null) { for (int n = 0; n < constraint_num; n++) { if (line.IndexOf("CreateReference") != -1) { if (line.IndexOf(a1_constraint[n].master_ref) != -1) { a1_constraint[n].master_ref = line.Substring(line.IndexOf("\"") + 1, line.LastIndexOf("\"") - line.IndexOf("\"") - 1); //Console.WriteLine(a1_constraint[n].master_ref); } else if (line.IndexOf(a1_constraint[n].slave_ref) != -1) { a1_constraint[n].slave_ref = line.Substring(line.IndexOf("\"") + 1, line.LastIndexOf("\"") - line.IndexOf("\"") - 1); //Console.WriteLine(a1_constraint[n].slave_ref); } } } } } //part information storage List <PartsInfo> part_collect = new List <PartsInfo>(); List <ConstraintInfo> const_collect = new List <ConstraintInfo>(); //CATProduct location Assembly Product1 = new Assembly(); string product_address = folder_address + "\\A2.CATProduct"; //수정 필요. Console.WriteLine(product_address); //CATProduct 열어서 part number, instance name, address 가져오기. //constraint 갯수, 종류, master ref, slave ref 구하기. int part_numb = 0; int const_numb = 0; if (Product1.InitializeCATIA(product_address, (int)0)) { Console.WriteLine("working!"); Console.WriteLine(Product1.cProduct.get_Name()); //product name part_numb = Product1.cProducts.Count; // # of parts Console.WriteLine(part_numb); const_numb = Product1.cConstraints.Count; // # of constraints Console.WriteLine(const_numb); if (part_numb > 0) //파트 정보 { for (int i = 1; i <= part_numb; i++) { Console.WriteLine(""); string first = Product1.cProducts.Item(i).get_Name(); //instance name Console.WriteLine(first); string first_part = Product1.cProducts.Item(i).get_PartNumber(); //part number Console.WriteLine(first_part); string first_address = Product1.cProducts.Item(i).ReferenceProduct.GetMasterShapeRepresentationPathName(); //address of part 수정 필요!!!! Console.WriteLine(first_address); string first_transcad = first_address.Substring(first_address.LastIndexOf("\\") + 1, first_address.LastIndexOf(".") - first_address.LastIndexOf("\\") - 1); Console.WriteLine(first_transcad); PartsInfo temp = new PartsInfo(); temp.ins_name = first; temp.catname = first_part; temp.address = first_address; temp.transname = first_transcad; part_collect.Add(temp); } } if (const_numb > 0) //구속 정보 { Console.WriteLine(""); string second = Product1.cConstraints.Name; Console.WriteLine(second); string second2 = Product1.cConstraints.Item(1).get_Name(); Console.WriteLine(second2); for (int i = 1; i <= const_numb; i++) { //Console.WriteLine(""); //constraint name //constraint type //master ref //slave ref } } Product1.UninitializeCATIA(); } /////////////////////// //파트 번역..CATParts// /////////////////////// //parts information PreStack stack = new PreStack(); stack.Clear(); for (int i = 0; i < part_numb; i++) { stack.StackItem(part_collect[i].address, part_collect[i].catname, part_collect[i].transname); } int modeya = 0; //constraint 번역 못하게 막음. if (modeya != 0) { //constraint information ReferenceClass.ref_Pre m_refer = new ReferenceClass.ref_Pre(stack); //Set constraint1 = constraints1.AddBiEltCst(catCstTypeOn, reference1, reference2) m_refer.SetConstraint(stack, stack.GetSize(), a1_constraint[0].type, a1_constraint[0].master_ref, a1_constraint[0].slave_ref, "move", 0); //수정 필요. "move"??? m_refer.SetConstraint(stack, stack.GetSize(), a1_constraint[1].type, a1_constraint[1].master_ref, a1_constraint[1].slave_ref, "", 0); //수정 필요. } }
//각 Constraint에서 사용하는 Master/Slave Part의 ReferenceName을 refCommand 구조체로 리턴 private refCommand TestRefer(TransCAD.StdAssemConstraint tConstraint, CTYPE i, PreStack _stack) //constrain 받아오기 { CTYPE type = i; refCommand para = new refCommand(); refCommand result = new refCommand(); ReferenceClass.ref_Post m_refer = new ReferenceClass.ref_Post(); m_refer.Set_stack_info(_stack); double value = 0; //Type Define TransCAD 7.0 /* * TransCAD.StdAssemblyConstraintType.StdAssemblyConstraintType_Angle; * TransCAD.StdAssemblyConstraintType.StdAssemblyConstraintType_Coaxial; * TransCAD.StdAssemblyConstraintType.StdAssemblyConstraintType_Coincidence; * TransCAD.StdAssemblyConstraintType.StdAssemblyConstraintType_Distance; * TransCAD.StdAssemblyConstraintType.StdAssemblyConstraintType_Fix; * TransCAD.StdAssemblyConstraintType.StdAssemblyConstraintType_Parallel; * TransCAD.StdAssemblyConstraintType.StdAssemblyConstraintType_Perpendicular; */ switch (type) { case CTYPE.StdAssemblyConstraintType_Coaxial: TransCAD.StdAssemConstraintCoaxial coax = (TransCAD.StdAssemConstraintCoaxial)tConstraint; Console.WriteLine("Loading Coaxial......................................"); _debug = coax.Name; para.command = (int)type; para.param = "Axis" + ":("; para.MasterPart = coax.ConstrainedPart.Name; para.SlavePart = coax.ReferencePart.Name; para.MasterPart_Ref = coax.ConstrainedEntity.ReferenceeName; _debug = coax.ConstrainedEntity.Name; ///[Edit]For test A1 TestRally 20190712 { //TransCAD.Reference tempref = coax.ConstrainedEntity; //bool res = tempref.IsPlanarFace; //if we get edge name we have to find surface that define axis if (para.MasterPart_Ref.IndexOf('#') != -1) { string[] _split = para.MasterPart_Ref.Split('#'); TransCAD.Part ptr = coax.ConstrainedPart; for (int s = 0; s < _split.Length; s++) { string temp = _split[s].Substring(_split[s].IndexOf(',', _split[s].IndexOf(',') + 1) + 1); TransCAD.Reference tempref = ptr.SelectBrepByName(temp); if (!tempref.IsPlanar) { para.MasterPart_Ref = _split[s]; break; } para.MasterPart_Ref = _split[s]; } } } para.SlavePart_Ref = coax.ReferenceEntity.ReferenceeName; _debug = coax.ReferenceEntity.Name; ///[Edit]For test A1 TestRally 20190712 { //if we get edge name we have to find surface that define axis if (para.SlavePart_Ref.IndexOf('#') != -1) { string[] _split = para.SlavePart_Ref.Split('#'); //para.SlavePart_Ref = _split[1]; //Method 2 : Find by name of 'Sketch' for (int j = 0; j < _split.Length; j++) { if (_split[j].IndexOf("Sketch") > 0) { para.SlavePart_Ref = _split[j]; } } } if (para.SlavePart_Ref.IndexOf('#') != -1) { string[] _split = para.SlavePart_Ref.Split('#'); TransCAD.Part ptr = coax.ReferencePart; for (int s = 0; s < _split.Length; s++) { string temp = _split[s].Substring(_split[s].IndexOf(',', _split[s].IndexOf(',') + 1) + 1); TransCAD.Reference tempref = ptr.SelectBrepByName(temp); if (!tempref.IsPlanar) { para.SlavePart_Ref = _split[s]; break; } para.SlavePart_Ref = _split[s]; } } } Console.WriteLine(coax.ConstrainedEntity.ReferenceeName + ".&&." + coax.ReferenceEntity.ReferenceeName); break; case CTYPE.StdAssemblyConstraintType_Coincidence: TransCAD.StdAssemConstraintCoincidence coin = (TransCAD.StdAssemConstraintCoincidence)tConstraint; Console.WriteLine("Loading COINCIDENCE......................................"); _debug = coin.Name; para.command = (int)type; para.param = ""; para.MasterPart = coin.ConstrainedPart.Name; para.SlavePart = coin.ReferencePart.Name; para.MasterPart_Ref = coin.ConstrainedEntity.ReferenceeName; para.SlavePart_Ref = coin.ReferenceEntity.ReferenceeName; Console.WriteLine(coin.ConstrainedEntity.ReferenceeName + ".&&." + coin.ReferenceEntity.ReferenceeName); break; // Mutahar 18-10-09 case CTYPE.StdAssemblyConstraintType_Angle: //(Surface-Surface) TransCAD.StdAssemConstraintAngle ang = (TransCAD.StdAssemConstraintAngle)tConstraint; Console.WriteLine("Loading Angle......................................"); _debug = ang.Name; para.command = (int)type; para.param = ""; para.MasterPart = ang.ConstrainedPart.Name; para.SlavePart = ang.ReferencePart.Name; para.MasterPart_Ref = ang.ConstrainedEntity.ReferenceeName; para.SlavePart_Ref = ang.ReferenceEntity.ReferenceeName; value = ang.Angle; Console.WriteLine(ang.ConstrainedEntity.ReferenceeName + ".&&." + ang.ReferenceEntity.ReferenceeName); //Angle Value? break; case CTYPE.StdAssemblyConstraintType_Distance: //(Surface-Surface) TransCAD.StdAssemConstraintDistance dist = (TransCAD.StdAssemConstraintDistance)tConstraint; Console.WriteLine("Loading Distance......................................"); _debug = dist.Name; para.command = (int)type; para.param = ""; para.MasterPart = dist.ConstrainedPart.Name; para.SlavePart = dist.ReferencePart.Name; para.MasterPart_Ref = dist.ConstrainedEntity.ReferenceeName; para.SlavePart_Ref = dist.ReferenceEntity.ReferenceeName; Console.WriteLine(dist.ConstrainedEntity.ReferenceeName + ".&&." + dist.ReferenceEntity.ReferenceeName); value = dist.Distance; //Offset Value? break; default: Console.WriteLine("Anything........"); break; } Console.WriteLine("////////////////////////////////////////////////////////////////////////"); result = m_refer.ConvertRefPost(para); result.option = value; Console.WriteLine("////////////////////////////////////////////////////////////////////////"); Console.WriteLine("ConsNum : " + result.command.ToString()); Console.WriteLine("master : " + result.MasterPart_Ref); Console.WriteLine("slave : " + result.SlavePart_Ref); Console.WriteLine("////////////////////////////////////////////////////////////////////////"); return(result); }
enum CTYPE { StdAssemblyConstraintType_Coaxial, StdAssemblyConstraintType_Coincidence, StdAssemblyConstraintType_Angle, StdAssemblyConstraintType_Distance, StdAssemblyConstraintType_Fix, StdAssemblyConstraintType_Parallel, StdAssemblyConstraintType_Perpendicular } // Mutahar 19-02-28 //Chiho 19-11-20 //Form2에서 사용할 떄 사용 최종 버전 : Assembly Script를 저장할 filepath와 Part파일들이 저장된 path를 받아와서 Assembly.CATScript파일 생성 //오버로딩 함수 : Program.cs에서 바로 실행할 떄 쓰임 : Backup ver5_06을 참조 //오버로딩 함수 :Form1에서 버튼을 눌렀을 떄 API만 사용할 떄 filepath만 줘서 사용한다 : Backup ver5_06을 참조 public void TranslateConstraintsT2C(string filepath, string path) // From TransCAD to CATIA { //Get Assem tAssem = tAssemDoc.Assem; //tConstraints = tAssem.Constraints; //Remove TransCAD 7.0 TransCAD.StdAssemConstraint tConstraint; /* * 번역 추가 해야할 사항 17-09-15 * Slave part에서 Constrained reference name * Master part 에서 Reference name * Part 번호 Get * Product 번호 Get * 기존 Reference name에 Part번호 / Product 번호 붙이기 */ string catPartfilepath; string[] catPartNum; string catProdNum; string referenceNameFromPart; using (StreamWriter mywriter = new StreamWriter(filepath)) { //Catia init try { cApp = (INFITF.Application)Marshal.GetActiveObject("CATIA.Application"); } catch { cApp = (INFITF.Application)Activator.CreateInstance(Type.GetTypeFromProgID("CATIA.Application")); } if (cApp == null) { return; } cDocs = cApp.Documents; //mywriter.Write(hexHash + " "); //mywriter.WriteLine(Path.GetFileName(dataFile.ToString())); //Step1 : Product Document 생성 mywriter.WriteLine("Language=\"VBSCRIPT\""); mywriter.WriteLine("Sub CATMain()"); mywriter.WriteLine("Dim documents1 As Documents"); mywriter.WriteLine("Set documents1 = CATIA.Documents"); mywriter.WriteLine("Dim productDocument1 As Document"); mywriter.WriteLine("Set productDocument1 = documents1.Add(\"Product\")"); mywriter.WriteLine("Dim product1 As Product"); mywriter.WriteLine("Set product1 = productDocument1.Product"); ///////////////파트 추가하는 부분/////////////////// int cnt = 0; PreStack stack = new PreStack(); stack.Clear(); for (int s = 0; s < tAssem.ComponentCount; s++) // Trans CAD 7.0 : SubAssembly = Component { mywriter.WriteLine("Dim products" + (s + 1).ToString() + " As Products"); mywriter.WriteLine("Set products" + (s + 1).ToString() + " = product1.Products"); //Step2 : CATPart 두개 Loading for (int w = 1; w < tAssem.Component[s].PartCount; w++) { mywriter.WriteLine("Dim arrayOfVariantOfBSTR" + (cnt + w).ToString() + "(0)"); catPartfilepath = path + "\\" + tAssem.Component[s].Part[w].Name + ".CATPart"; mywriter.WriteLine("arrayOfVariantOfBSTR" + (cnt + w).ToString() + "(0) = \"{0}\"", catPartfilepath); mywriter.WriteLine("products" + (s + 1).ToString() + ".AddComponentsFromFiles arrayOfVariantOfBSTR" + (cnt + w).ToString() + ", \"All\""); /* Example Feature Approach TransCAD 7.0 * TransCAD.Features features = part.Features; * int nFeature = features.Count; * * IEnumerator e = features.GetEnumerator(); * while (e.MoveNext()) * { * TransCAD.Feature feature = (TransCAD.Feature)e.Current; * TransCAD.FeatureType type = feature.Type; * string featureName = feature.Name; * * // Like this, you can get all information in this assembly document * } */ //Check Debugging Console.WriteLine("Import Parts.........................................."); string name = tAssem.Component[s].Name; string name2 = tAssem.Component[s].Part[w].Name; Console.WriteLine("ComponentName : " + name + " PartName : " + name2); Console.WriteLine("Import Parts Finish..................................."); //Get CATPart Real Name -> Part1 or Part2... or anyNames //CATIA 에서 CATPart 파일이 어떤 인스턴스 네임을 가지고 있는지 검색하는 기능 cPartDoc = (MECMOD.PartDocument)cDocs.Read(catPartfilepath); cPart = cPartDoc.Part; string CATIA_inner_name = cPart.get_Name(); stack.StackItem(catPartfilepath, CATIA_inner_name, tAssem.Component[s].Part[w].Name); } cnt += tAssem.Component[s].PartCount; } #region ..............................................Constraints 초기화 //Contraints 개수 및 각Constraints들의 TYPE을 몰라서 하나 하나 해줌 //다음에는 size랑 각 type은 transcad쪽에서 가져올 수 있게 하면 됨 //int constraint_size = tConstraints.Count; int constraint_size = tAssem.ConstraintCount; //CTYPE[] ttype = new CTYPE[2] { CTYPE.COAXIAL, CTYPE.INCIDENCE }; string Sproduct = ""; string Sconstraints = "constraints1"; //기본적인부분 string Sconstraint = ""; string Smaster_ref = ""; string Sslave_ref = ""; refCommand m_ref; // string Sangle = ""; // string Sdistance = ""; mywriter.WriteLine("Dim " + Sconstraints + " As Collection"); #endregion #region .............................................각 Constraint 실행 int d = 1; int a = 1; for (int i = 0; i < constraint_size; i++) { tConstraint = tAssem.Constraint[i]; //TransCAD에서 받아온 tConstraint m_ref = TestRefer(tConstraint, (CTYPE)Enum.Parse(typeof(CTYPE), tConstraint.Type.ToString()), stack); //reference name translate Sproduct = m_ref.MasterPart_Ref.Substring(m_ref.MasterPart_Ref.IndexOf("\"") + 1, m_ref.MasterPart_Ref.IndexOf("/") - 1); Sconstraint = "constraint" + (i + 1).ToString(); //constraint1 //Constraint is so exciting truement server caster most of Smaster_ref = "reference" + (2 * i + 1).ToString(); //reference1 Sslave_ref = "reference" + (2 * i + 2).ToString(); //reference2 //constraints 설정 mywriter.WriteLine("Set " + Sconstraints + " = " + Sproduct + ".Connections(\"CATIAConstraints\")"); //master refer 생성 mywriter.WriteLine("Dim " + Smaster_ref + " As Reference"); mywriter.WriteLine("Set " + Smaster_ref + " = " + Sproduct + ".CreateReferenceFromName(" + m_ref.MasterPart_Ref + ")"); //slaver refer 생성 mywriter.WriteLine("Dim " + Sslave_ref + " As Reference"); mywriter.WriteLine("Set " + Sslave_ref + " = " + Sproduct + ".CreateReferenceFromName(" + m_ref.SlavePart_Ref + ")"); //Constraint[1] 실행 mywriter.WriteLine("Dim " + Sconstraint + " As Constraint"); mywriter.WriteLine("Set " + Sconstraint + " = " + Sconstraints + ".AddBiEltCst(" + m_ref.param + ", " + Smaster_ref + ", " + Sslave_ref + ")"); // to be used in the case of angle and distance constriants string const_inst = m_ref.param; string const_ang = "catCstTypeAngle"; string const_dist = "catCstTypeDistance"; string Sangle = ""; string Sdistance = ""; bool ang = const_inst.Equals(const_ang); bool dist = const_inst.Equals(const_dist); if (ang) // Additional portion of angle constraint { Sangle = "angle" + (a++).ToString(); mywriter.WriteLine("Dim " + Sangle + " As Dimension"); mywriter.WriteLine("Set " + Sangle + " = " + Sconstraint + ".Dimension"); mywriter.WriteLine(Sangle + ".Value = " + m_ref.option.ToString()); mywriter.WriteLine(Sconstraint + ".AngleSector" + "=" + "catCstAngleSector0"); // "catCstAngleSector0" is hard coded until we have a function to read it a = a + 1; } else if (dist) // Additional portion of distance constraint { Sdistance = "distance" + (d++).ToString(); mywriter.WriteLine("Dim " + Sdistance + " As Dimension"); mywriter.WriteLine("Set " + Sdistance + " = " + Sconstraint + ".Dimension"); mywriter.WriteLine(Sdistance + ".Value = " + m_ref.option.ToString()); mywriter.WriteLine(Sconstraint + ".Orientation" + "=" + "catCstOrientSame"); // "catCstOrientSame" is hard coded until we have a function to read it d = d + 1; } } #endregion mywriter.WriteLine(Sproduct + ".Update "); mywriter.WriteLine("End Sub"); } }
/*****************************************************************************************/ /*****************************************************************************************/ // Pre-Processor Assembly private void button3_Click_1(object sender, EventArgs e) { //Assembly file: bring CATScript and address string CATAssem = CATProductOpenDialog(); //Assembly CATProduct address if (CATAssem == "") { return; } string product_address = CATAssem; Console.WriteLine(product_address); string folder_address = CATAssem.Substring(0, CATAssem.LastIndexOf("\\")); Console.WriteLine(folder_address); //Assembly folder address. //Part file: bring address of parts folder string CATAssem2 = CATScriptOpenDialog(); //-> 수정 필요/ 아무 파트나 선택하면 됌. if (CATAssem2 == "") { return; } string folder_address_parts = CATAssem2.Substring(0, CATAssem2.LastIndexOf("\\")); Console.WriteLine(folder_address_parts); //part folder address. //part information storage List <PartsInfo> part_collect = new List <PartsInfo>(); List <ConstraintInfo> const_collect = new List <ConstraintInfo>(); //CATProduct location Assembly Product1 = new Assembly(); //CATProduct 열어서 part number, instance name, address 가져오기. //constraint 갯수, 종류, master ref, slave ref 구하기. int part_numb = 0; int const_numb = 0; if (Product1.InitializeCATIA(product_address, (int)0)) { Console.WriteLine("working!"); Console.WriteLine(Product1.cProduct.get_Name()); //product name part_numb = Product1.cProducts.Count; // # of parts Console.WriteLine(part_numb); const_numb = Product1.cConstraints.Count; // # of constraints Console.WriteLine(const_numb); //파트 정보 가져오기 if (part_numb > 0) //파트 정보 { for (int i = 1; i <= part_numb; i++) { Console.WriteLine(""); string first = Product1.cProducts.Item(i).get_Name(); //instance name Console.WriteLine(first); string first_part = Product1.cProducts.Item(i).get_PartNumber(); //part number Console.WriteLine(first_part); string first_address = Product1.cProducts.Item(i).ReferenceProduct.GetMasterShapeRepresentationPathName(); //address of part 수정 필요!!!! Console.WriteLine(first_address); string first_transcad = first_address.Substring(first_address.LastIndexOf("\\") + 1, first_address.LastIndexOf(".") - first_address.LastIndexOf("\\") - 1); Console.WriteLine(first_transcad); PartsInfo temp = new PartsInfo(); temp.ins_name = first; temp.catname = first_part; temp.address = first_address; temp.transname = first_transcad; part_collect.Add(temp); } } //구속 정보 가져오기 if (const_numb > 0) //구속 정보 { Console.WriteLine(""); string second = Product1.cConstraints.Name; Console.WriteLine(second); for (int i = 1; i <= const_numb; i++) { Console.WriteLine(""); ConstraintInfo temp = new ConstraintInfo(); //constraint name string second2 = Product1.cConstraints.Item(i).get_Name(); temp.name = second2; Console.WriteLine(second2); //constraint type string second2t = Product1.cConstraints.Item(i).Type.ToString(); temp.type = second2t; Console.WriteLine(second2t); //master ref string mas = Product1.cConstraints.Item(i).GetConstraintElement(1).DisplayName; temp.master_ref = mas; Console.WriteLine(mas); //slave ref string slv = Product1.cConstraints.Item(i).GetConstraintElement(2).DisplayName; temp.slave_ref = slv; Console.WriteLine(slv); const_collect.Add(temp); } } Product1.UninitializeCATIA(); } /////////////////////// //파트 번역..CATParts// /////////////////////// //parts information PreStack stack = new PreStack(); stack.Clear(); for (int i = 0; i < part_numb; i++) { //수정필요 //string trans = part_collect[i].ins_name; //stack.StackItem(part_collect[i].address, part_collect[i].catname, part_collect[i].ins_name); ///[Edit]For test A1 TestRally 20190712 stack.StackItem(part_collect[i].address, part_collect[i].catname, part_collect[i].transname); } int modeya = 1; //constraint 번역 못하게 막음. if (modeya != 0) { //constraint information ReferenceClass.ref_Pre m_refer = new ReferenceClass.ref_Pre(stack); //Set constraint1 = constraints1.AddBiEltCst(catCstTypeOn, reference1, reference2) //m_refer.SetConstraint(stack, stack.GetSize(), a1_constraint[0].type, a1_constraint[0].master_ref, a1_constraint[0].slave_ref, "move", 0); //수정 필요. "move"??? //m_refer.SetConstraint(stack, stack.GetSize(), a1_constraint[1].type, a1_constraint[1].master_ref, a1_constraint[1].slave_ref, "", 0); //수정 필요. //new Set Constraints for (int i = 0; i < const_numb; i++) //const_numb { m_refer.SetConstraint(stack, stack.GetSize(), const_collect[i].type, const_collect[i].master_ref, const_collect[i].slave_ref, "", 0); } } }