Community
Civil 3D Customization
Welcome to Autodesk’s AutoCAD Civil 3D Forums. Share your knowledge, ask questions, and explore popular AutoCAD Civil 3D Customization topics.
cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

CodeSetStyle items

4 REPLIES 4
SOLVED
Reply
Message 1 of 5
joantopo
515 Views, 4 Replies

CodeSetStyle items

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
4 REPLIES 4
Message 2 of 5
joantopo
in reply to: joantopo

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
Message 3 of 5
joantopo
in reply to: joantopo

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
Message 4 of 5
Jeff_M
in reply to: joantopo

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
in reply to: Jeff_M

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

Can't find what you're looking for? Ask the community or share your knowledge.

Post to forums  

Rail Community


Autodesk Design & Make Report