Function Syntax: BMEntityPosC3D Version: 1 Date: 01.12.2025 Version: 2 Date: 28.04.2026 8:36:46AM AI Description This AutoLISP routine creates a Civil 3D entity bookmark manager for quickly saving, filtering, reopening, and zooming to important Civil 3D objects in the current drawing. The program requires the user to select supported Civil 3D entities from the drawing, such as alignments, profiles, profile views, sample lines, feature lines, COGO points, corridors, pipes, structures, pipe networks, surfaces, section views, assemblies, and subassemblies. The main command is BMEntityPosC3D. The tool stores a bookmark entry for each supported selected object, including the entity type label, bounding-box coordinates, color, object handle, Civil 3D object type, and optional user remark. The result is a reusable Civil 3D navigation list that lets the user return to important design objects faster without manually searching the drawing. Main Command📌 BMEntityPosC3D — opens the Civil 3D bookmarked entity position manager. Loading Method🧰 Load LISP File — load the file BookmarksC3DEntities.lsp in AutoCAD Civil 3D using APPLOAD.📌 Run Command — run BMEntityPosC3D from the Civil 3D command line. User Workflow🚀 Start Command — the user runs BMEntityPosC3D.🪟 Open Dialog — the program creates a temporary DCL dialog named C3D Bookmarked Entity Positions.📌 Pick From Drawing — the user clicks Pick from drawing to temporarily leave the dialog and select Civil 3D objects.🔍 Validate Selection — the routine checks each selected object and keeps only supported Civil 3D entity types.📚 Store Bookmark Entries — the routine stores the object type label, bounding box, color, handle, object name, and an empty remark field.🧩 Review Bookmarks — the dialog displays bookmarks in synchronized columns for element type, object name, color, and remark.🔍 Filter Bookmarks — the user can filter the list by group, name, color, and remark.📝 Add Remarks — the user can type a remark for the selected bookmark and click Set.🔎 Zoom To Object — the user selects a bookmark and clicks Zoom to zoom to the stored or current object extents.💾 Save List — the user can save the bookmark list to a default drawing-based .lst file.📁 Save As — the user can save the bookmark list to a custom .lst file.📂 Load List — the user can load the default bookmark list for the current drawing.📥 Import List — the user can import a bookmark list from another .lst file.✅ Finish — the user clicks OK to close the dialog.🔴 Cancel — the user clicks Cancel to close the dialog. Functionalities📌 Civil 3D Entity Bookmarking — the routine stores selected supported Civil 3D objects as bookmark entries for fast navigation later.🧩 Supported Object Detection — the code checks ObjectName values such as AeccDbAlignment, AeccDbProfile, AeccDbProfileView, AeccDbCogoPoint, AeccDbCorridor, AeccDbPipe, AeccDbStructure, AeccDbSurfaceTin, AeccDbAssembly, and related Civil 3D object classes.🔍 General Selection With Post Filtering — the command uses ssget without a selection filter, then accepts only objects approved by bmC3d-supported-p.📐 Bounding Box Storage — each bookmarked object stores its lower-left and upper-right bounding-box coordinates using vla-getboundingbox.🔎 Zoom To Bookmark — the routine zooms to the selected bookmark using vla-ZoomWindow with a small automatic padding around the object extents.🔄 Live Bounding Box Refresh — when the original entity handle still exists, the zoom function recalculates the current bounding box before zooming.🧠 Fallback Stored Position — if the object cannot be found by handle, the routine can still use the stored bounding-box coordinates from the bookmark entry.🎨 Color Capture — the routine reads AutoCAD color information from entity data and stores ByLayer, ByBlock, ACI color names, ACI numbers, or true-color values.🧩 Group Filter — bookmarks are grouped into categories such as Alignments, Profiles, Profile Views, Sections, Feature Lines, Cogo Points, Corridors, Pipes, Structures, Pipe Networks, Surfaces, Section Views, Assemblies, and Profile Network Parts.🔍 Name Filter — the user can filter bookmarks by Civil 3D object name using wildcard patterns.🎨 Color Filter — the user can filter bookmarks by stored color text using wildcard patterns.📝 Remark Filter — the user can filter bookmarks by custom remark text using wildcard patterns.📚 Multi Column Dialog List — the DCL dialog uses synchronized list boxes for element type, object name, color, and remark.📝 Remark Editing — the selected bookmark can be assigned a custom text remark for documentation and easier identification.📋 Duplicate Bookmark — the selected bookmark entry can be duplicated directly in the list.🧹 Delete Bookmark — the selected bookmark entry can be removed from the active bookmark list.🧹 Clear All Bookmarks — the user can clear the entire active bookmark list from the dialog.💾 Save Bookmark List — the routine saves the list to a drawing-based .lst file named with the current drawing base name and suffix _BMEntityPosC3D.lst.📁 Save Bookmark List As — the user can choose a custom .lst destination with getfiled.📂 Load Default Bookmark List — the tool can reload the default list associated with the current drawing path and drawing name.📥 Import Bookmark List — the user can import a bookmark list from another .lst file.🪟 Temporary DCL Interface — the dialog file is generated dynamically by the LISP code and deleted when the command ends. Important Helper Logic📐 Bounding Box ReaderbmC3d-get-bbox reads object extents with vla-getboundingbox and converts safe arrays into point lists.🔎 Zoom HelperbmC3d-zoom-ll-ur performs a window zoom using vla-ZoomWindow.📐 Zoom Window BuilderbmC3d-make-window calculates a padded zoom window from two stored bounding-box points.🎨 ACI Color Name MapperbmC3d-aci-name converts common ACI color indexes into readable color names such as RED, YELLOW, GREEN, CYAN, BLUE, MAGENTA, WHITE, DARK GRAY, and LIGHT GRAY.🎨 Color String BuilderbmC3d-color-string converts AutoCAD entity color data into readable text for the dialog color column.🔒 Safe Property ReaderbmC3d-safe-prop reads Visual LISP object properties with vl-catch-all-apply to reduce command interruption when a property is unavailable.🏷️ Object Name ReaderbmC3d-get-name-from-obj reads Name or DisplayName from Civil 3D objects.🔍 Wildcard MatcherbmC3d-wild-match performs case-insensitive wildcard matching with wcmatch.🔐 Supported Object ValidatorbmC3d-supported-p determines whether a selected object type should become a bookmark.🧩 Group MapperbmC3d-map-group converts Civil 3D object class names into user-friendly group names.📁 Default File Path BuilderbmC3d-file-path builds the default bookmark list path from DWGPREFIX, DWGNAME, and _BMEntityPosC3D.lst.💾 File WriterbmC3d-write-list-to-file writes the current bookmark list to a text-based LISP data file with prin1.📂 File ReaderbmC3d-read-list-from-file reads a saved bookmark list back into memory.📚 Group BuilderbmC3d-build-groups builds the list of available filter groups from the current bookmarks.🧩 List UpdaterbmC3d-update-list refreshes all visible list boxes and synchronizes filtered bookmark indexes.📌 Pick And StorebmC3d-pick-and-store lets the user select objects, validates supported Civil 3D object types, and appends bookmark entries to the active list.🔎 Zoom ActionbmC3d-apply-zoom zooms to the selected visible bookmark row.📝 Remark SetterbmC3d-set-remark writes the current remark edit-box value into the selected bookmark entry.🧹 Delete HelperbmC3d-delete-selected removes the selected bookmark from the active list.📋 Duplicate HelperbmC3d-duplicate-selected duplicates the selected bookmark directly after its current position.🪟 DCL WriterbmC3d-write-dcl writes the temporary dialog definition for the bookmark manager. Important Code Notes📌 Command Namethe command name is BMEntityPosC3D.🔴 Platform Requirementthe routine is intended for Autodesk Civil 3D drawings because it targets Civil 3D object class names such as AeccDbAlignment, AeccDbProfileView, AeccDbCogoPoint, AeccDbCorridor, AeccDbPipe, and AeccDbSurfaceTin.🔴 Bookmark Only Notethe routine does not create AutoCAD Named Views, Civil 3D labels, Civil 3D objects, alignments, profiles, sections, or reports. It stores an internal bookmark list and zoom locations.🔴 Selection Filter Notethe selection call uses ssget without a DXF filter. Unsupported selected objects are ignored after selection.🔴 Handle Dependency Notethe best zoom behavior depends on the stored entity handle still existing in the drawing.🔴 Imported File Safety Notethe routine reads imported .lst content as LISP data. Import only trusted bookmark list files.🔴 Color Review Notethe true-color channel extraction should be reviewed if exact RGB display is critical, because AutoCAD true-color integer channel order can be easy to misread.🔴 Persistence Notethe bookmark list is saved only when the user clicks Save or Save as. Closing the dialog does not automatically save unsaved bookmarks.🔴 No Geometry Modificationthe routine does not modify geometry, point groups, styles, labels, bands, corridors, pipe networks, ProfileView objects, SectionView objects, or Alignment data. Final Result The final result is a practical Civil 3D navigation and bookmark workflow. The user can collect important Civil 3D objects into a searchable list, add remarks, filter by group, name, color, or remark, save and reload the list, and zoom back to important drawing locations quickly. This improves productivity, reduces time spent searching large Civil 3D drawings, supports faster QA review, helps organize project navigation, and makes recurring design checks easier for AutoCAD Civil 3D users.