Files
dxfmakros/lib/elemente/dblclick.py
T

51 lines
1.5 KiB
Python

# dblclick.py
# SSG_BLOCKEDIT - Dispatcher fuer Rechtsklick-Bearbeitung von SSG-Bloecken
# Prueft den selektierten Block und oeffnet den passenden Dialog.
# ============================================
import PyRx as Rx
import PyDb as Db
import PyEd as Ed
from elemente.kreisel import kreisel_edit_entity
from elemente.eckrad import eckrad_edit_entity
@Rx.command("SSG_BLOCKEDIT")
def ssg_blockedit():
"""Dispatcher: prueft selektierten Block und oeffnet passenden Dialog.
Wird aus dem Rechtsklick-Kontextmenue aufgerufen.
Erkennt KREISEL_* und ECKRAD_* Bloecke und oeffnet den jeweiligen
wxPython-Bearbeitungsdialog. Bei anderen Bloecken wird BEDIT gestartet.
"""
ed = Ed.Editor()
db = Db.HostApplicationServices().workingDatabase()
# Implied Selection nutzen (bereits selektiertes Objekt)
res = ed.selectImplied()
if res[0] != Ed.PromptStatus.eOk:
return
ss = res[1]
if ss.length() == 0:
return
ent_id = ss.getObjectIds()[0]
ent = Db.Entity(ent_id, Db.OpenMode.kForRead)
if not ent.isKindOf(Db.BlockReference.desc()):
return
bref = Db.BlockReference(ent_id, Db.OpenMode.kForRead)
btr = Db.BlockTableRecord(bref.blockTableRecord(), Db.OpenMode.kForRead)
bname = btr.getName().upper()
if bname.startswith("KREISEL_"):
kreisel_edit_entity(db, ent_id)
elif bname.startswith("ECKRAD_"):
eckrad_edit_entity(db, ent_id)
else:
# Anderer Block -> normaler Block-Editor
ed.runCommand("_.BEDIT\n")