Omniflo Boegen und Weichen auch durch .py erzeugen und ändern.
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
# 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")
|
||||
Reference in New Issue
Block a user