• Industries
  • Products
  • Buy
  • Services & Support
  • Communities
  • Discussion Groups

    AutoCAD Civil 3D Customization

    Reply
    Distinguished Mentor
    Posts: 859
    Registered: ‎03-24-2009

    Profile Data Band Label Group

    166 Views, 2 Replies
    04-07-2012 12:13 PM

    So I've got a collection of the LabelGroupSubEntity in the ProfileDataBandLabelGroup. I need to replace some values inside them based on what Vertical Geometry Point they are labeling. Is there an easy way to determine what station value it is labeling?

     

    Christopher 

    Please use plain text.
    *Expert Elite*
    Posts: 3,040
    Registered: ‎07-22-2003

    Re: Profile Data Band Label Group

    04-08-2012 05:15 PM in reply to: Civil3DReminders

    Will this give you what you need?

     

                CivilDocument civdoc = CivilApplication.ActiveDocument;
                using (Transaction tr = HostApplicationServices.WorkingDatabase.TransactionManager.StartTransaction())
                {
                    Alignment oAlign = (Alignment)civdoc.GetAlignmentIds()[0].GetObject(OpenMode.ForRead);
                    ProfileView pv = (ProfileView)oAlign.GetProfileViewIds()[0].GetObject(OpenMode.ForWrite);
                    RXClass profDataBandLabelGroupRXClass = SystemObjects.ClassDictionary["AeccDbProfileDataBandLabeling"] as RXClass;
                    ObjectIdCollection profBandLabelsObjIdColl = ProfileBandLabelGroup.GetAvailableLabelGroups(profDataBandLabelGroupRXClass, pv.ObjectId, false);
                    if (profBandLabelsObjIdColl.Count > 0)
                    {
                        ProfileBandLabelGroup grp = (ProfileBandLabelGroup)profBandLabelsObjIdColl[0].GetObject(OpenMode.ForRead);
                        if (grp.GetType() == typeof(ProfileDataBandLabelGroup))
                        {
                            foreach (LabelGroupSubEntity subent in grp.SubEntities)
                            {
                                double station = Double.NaN;
                                double elevation = Double.NaN;
                                pv.FindStationAndElevationAtXY(subent.AnchorInfo.Location.X, subent.AnchorInfo.Location.Y, ref station, ref elevation);
                            }
                        }
                    }
                    tr.Commit();
                }
    

     

    Jeff_M, also a frequent Swamper
    Please use plain text.
    Distinguished Mentor
    Posts: 859
    Registered: ‎03-24-2009

    Re: Profile Data Band Label Group

    04-08-2012 06:28 PM in reply to: Jeff_M

    Yes and no. It works if my labels are not staggered. Unfortunatley my labels are staggered so they won't be a the point being labeled.

     

    Christopher

    Please use plain text.