CodeSetStyle items

CodeSetStyle items

joantopo
Mentor Mentor
1,044 Views
4 Replies
Message 1 of 5

CodeSetStyle items

joantopo
Mentor
Mentor

Hi.

 

I want to get all codes in one Code Set Style. (For example: "Básico" style).

 

that style is:

 

c.jpg

 

Vínculo (Link) branch has 2 code (NormalItemType),  Mark branch has 2 code (NormalItemType) and Shape has 3 codes (NormalItemType).

 

However, if I do this:

 

   int indice = comboBox_estilos.SelectedIndex;
            ObjectId id_estil = coll_Id[indice];

            using (Transaction trans = HostApplicationServices.WorkingDatabase.TransactionManager.StartTransaction())
            {
                Autodesk.Civil.DatabaseServices.Styles.CodeSetStyle estilo_ConjuntoCode = trans.GetObject(id_estil, OpenMode.ForWrite) as Autodesk.Civil.DatabaseServices.Styles.CodeSetStyle;

                Autodesk.Civil.DatabaseServices.Styles.SubassemblySubentityStyleType tipe=estilo_ConjuntoCode.SubentityStyleType;
              
                
                switch (tipe)
                {
                    case Autodesk.Civil.DatabaseServices.Styles.SubassemblySubentityStyleType.LinkType:
                        break;

                    case Autodesk.Civil.DatabaseServices.Styles.SubassemblySubentityStyleType.MarkerType:
                        break;

                    case Autodesk.Civil.DatabaseServices.Styles.SubassemblySubentityStyleType.ShapeType:
                        break;
                }
                
                //bucle para cada uno de los códigos que contiene

                for (int i = 0; i <= estilo_ConjuntoCode.Count - 1; i++)
                {

                    Autodesk.Civil.DatabaseServices.Styles.CodeSetStyleItem codigo = estilo_ConjuntoCode[i];

                    Autodesk.Civil.DatabaseServices.Styles.SubassemblySubentityStyleType tipo= codigo.StyleType;
                
                }

 

I only get the "SubEntityStyleType"=MarkerType and its 2 codes.

But, why I can´t get the codes from LinkType and ShapeType?

 

 

I know this: This property can't apply to DefaultCode item and NoCode item. I only want NormalItemType.

 

 

Moreover;

 

SubassemblySubentityStyleType Enumeration:

 

Member name                    Value  

 ShapeType 2 
 MarkerType 0 
 LinkType 1

 

 

This is an example to .Add() method from API guide:

1// Create a new style set using our previously created styles.
2objId = doc.Styles.ShapeStyles.Add("Style Set 1");
3CodeSetStyle oCodeSetStyle = ts.GetObject(objId, OpenMode.ForWrite) as CodeSetStyle;
4oCodeSetStyle.Add("TOP", doc.Styles.LinkStyles["Style2"]);
5oCodeSetStyle.Add("BASE", doc.Styles.ShapeStyles["Style3"]);
6
7ts.Commit();

Thanks.

Autocad C3D 2019 SP3, 2020 & 2021
Intel I9 9900K with frontal watercooler alphacool eisbaer 360 (original fans mounted in pull)- 3 fans Corsair 120 ML PRO in push.
MOBO Gygabyte Z390 Aorus Master- Corsair RGB Vengeance 64GB RAM (4x16) CL16
Nvidia Quadro RTX 4000
Samsung 970 EVO PLUS 1TB (unit C). Samsung 970 PRO 512GB (for data)
Power Supply: Corsair TX850M PLUS


Descubre mi programa VisorNET para Civil 3D:
https://apps.autodesk.com/CIV3D/es/Detail/Index?id=appstore.exchange.autodesk.com%3avisornet_windows32and64%3aes
0 Likes
Accepted solutions (1)
1,045 Views
4 Replies
Replies (4)
Message 2 of 5

joantopo
Mentor
Mentor

Hi.

 

I think I have found other bug:

 

I have tried to add a new code in LinkType:

 using (DocumentLock docLock = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.LockDocument())
            {

                using (Transaction trans = HostApplicationServices.WorkingDatabase.TransactionManager.StartTransaction())
                {
                    Autodesk.Civil.DatabaseServices.Styles.CodeSetStyle estilo_ConjuntoCode = trans.GetObject(id_estil, OpenMode.ForWrite) as Autodesk.Civil.DatabaseServices.Styles.CodeSetStyle;


                    estilo_ConjuntoCode.Add("TOPillo", civDoc.Styles.LinkStyles["_Invisible"]);

                    Autodesk.Civil.DatabaseServices.Styles.SubassemblySubentityStyleType tipe = estilo_ConjuntoCode.SubentityStyleType;


                    switch (tipe)
                    {
                        case Autodesk.Civil.DatabaseServices.Styles.SubassemblySubentityStyleType.LinkType:
                            break;

                        case Autodesk.Civil.DatabaseServices.Styles.SubassemblySubentityStyleType.MarkerType:
                            break;

                        case Autodesk.Civil.DatabaseServices.Styles.SubassemblySubentityStyleType.ShapeType:
                            break;
                    }

..............

 But I get this:

Although We specified LinkType for new code(TOPillo), it is added in MarkType!!!

 

c2.jpg

Autocad C3D 2019 SP3, 2020 & 2021
Intel I9 9900K with frontal watercooler alphacool eisbaer 360 (original fans mounted in pull)- 3 fans Corsair 120 ML PRO in push.
MOBO Gygabyte Z390 Aorus Master- Corsair RGB Vengeance 64GB RAM (4x16) CL16
Nvidia Quadro RTX 4000
Samsung 970 EVO PLUS 1TB (unit C). Samsung 970 PRO 512GB (for data)
Power Supply: Corsair TX850M PLUS


Descubre mi programa VisorNET para Civil 3D:
https://apps.autodesk.com/CIV3D/es/Detail/Index?id=appstore.exchange.autodesk.com%3avisornet_windows32and64%3aes
0 Likes
Message 3 of 5

joantopo
Mentor
Mentor

For:

  estilo_ConjuntoCode.Add("nuevo", civDoc.Styles.ShapeStyles["_Invisible"]);

 It happens the same. The new code is added in Mark instead of Shape.

Autocad C3D 2019 SP3, 2020 & 2021
Intel I9 9900K with frontal watercooler alphacool eisbaer 360 (original fans mounted in pull)- 3 fans Corsair 120 ML PRO in push.
MOBO Gygabyte Z390 Aorus Master- Corsair RGB Vengeance 64GB RAM (4x16) CL16
Nvidia Quadro RTX 4000
Samsung 970 EVO PLUS 1TB (unit C). Samsung 970 PRO 512GB (for data)
Power Supply: Corsair TX850M PLUS


Descubre mi programa VisorNET para Civil 3D:
https://apps.autodesk.com/CIV3D/es/Detail/Index?id=appstore.exchange.autodesk.com%3avisornet_windows32and64%3aes
0 Likes
Message 4 of 5

Jeff_M
Consultant
Consultant
Accepted solution

Joan, this should answer both questions at once. You need to set the CodeSetStyle.SubassemblySubentityStyleType to the type you want to work with. See the code below for a graphic example.

 

        [CommandMethod("CodeStyleTest")]
        public void codestyletest()
        {
            //int indice = comboBox_estilos.SelectedIndex;
            StylesRoot styles = CivilApplication.ActiveDocument.Styles;
            AcDb.ObjectId id_estil = styles.CodeSetStyles[0];
            StringBuilder sb = new StringBuilder();

            using (AcDb.Transaction trans = AcDb.HostApplicationServices.WorkingDatabase.TransactionManager.StartTransaction())
            {
                CodeSetStyle estilo_ConjuntoCode = trans.GetObject(id_estil, AcDb.OpenMode.ForWrite) as Autodesk.Civil.DatabaseServices.Styles.CodeSetStyle;
                sb.AppendLine("CodeSetStyle Name: " + estilo_ConjuntoCode.Name);

                estilo_ConjuntoCode.SubentityStyleType = SubassemblySubentityStyleType.MarkerType;
                sb.AppendLine("\t\tMarkers - ");
                estilo_ConjuntoCode.Add("TESTMARKER", styles.MarkerStyles[0]);
                for (int i = 0; i <= estilo_ConjuntoCode.Count - 1; i++)
                {
                    CodeSetStyleItem codigo = estilo_ConjuntoCode[i];
                    sb.AppendLine("\t\t\t" + codigo.Code);
                }
                estilo_ConjuntoCode.SubentityStyleType = SubassemblySubentityStyleType.LinkType;
                sb.AppendLine("\t\tLinks - ");
                estilo_ConjuntoCode.Add("TESTLINK", styles.LinkStyles[0]);
                for (int i = 0; i <= estilo_ConjuntoCode.Count - 1; i++)
                {
                    CodeSetStyleItem codigo = estilo_ConjuntoCode[i];
                    sb.AppendLine("\t\t\t" + codigo.Code);
                }
                estilo_ConjuntoCode.SubentityStyleType = SubassemblySubentityStyleType.ShapeType;
                sb.AppendLine("\t\tShapes - ");
                estilo_ConjuntoCode.Add("TESTSHAPE", styles.ShapeStyles[0]);
                for (int i = 0; i <= estilo_ConjuntoCode.Count - 1; i++)
                {
                    CodeSetStyleItem codigo = estilo_ConjuntoCode[i];
                    sb.AppendLine("\t\t\t" + codigo.Code);
                }
                trans.Commit();
            }
            Application.DocumentManager.MdiActiveDocument.Editor.WriteMessage(sb.ToString()); 
        }

 

Jeff_M, also a frequent Swamper
EESignature
Message 5 of 5

joantopo
Mentor
Mentor

Thanks a lot Jeff!

 

It works fine.

 

What do you think about this?

http://forums.autodesk.com/t5/AutoCAD-Civil-3D-Customization/Setting-featureline-styles-in-Corridor-...

 

In one Code Set Style we can set (featureLineStyleName) for each code in Marks, but it is only the first thime to create the corridor.

 

Then, you have to change feature line styles from that form(screenshoot).

 

 

 

 

Autocad C3D 2019 SP3, 2020 & 2021
Intel I9 9900K with frontal watercooler alphacool eisbaer 360 (original fans mounted in pull)- 3 fans Corsair 120 ML PRO in push.
MOBO Gygabyte Z390 Aorus Master- Corsair RGB Vengeance 64GB RAM (4x16) CL16
Nvidia Quadro RTX 4000
Samsung 970 EVO PLUS 1TB (unit C). Samsung 970 PRO 512GB (for data)
Power Supply: Corsair TX850M PLUS


Descubre mi programa VisorNET para Civil 3D:
https://apps.autodesk.com/CIV3D/es/Detail/Index?id=appstore.exchange.autodesk.com%3avisornet_windows32and64%3aes
0 Likes