Hallo zusammen,
ich bekomme es leider nicht hin, eine Silfläche in mein PythonPart einzubinden. Ich habe bisher ein Polygonzug bzw. Kreis setzten können, aber es scheitert leider jetzt an der Stilfläche. Im Anhang ist meine Datei .pyp.
Die Py kann ich hier leider nicht hochladen, daher hier der Code:
from CreateElementResult import CreateElementResult
import NemAll_Python_Geometry as AllplanGeo
import NemAll_Python_AllplanSettings as AllplanSettings
import NemAll_Python_BaseElements as AllplanBaseElements
import NemAll_Python_BasisElements as AllplanBasisElements
import NemAll_Python_IFW_ElementAdapter as AllplanElementAdapter
from PythonPartUtil import PythonPartUtil
from BuildingElement import BuildingElement
from BuildingElementAttributeList import BuildingElementAttributeList
# Print some information
print('Load Elementstützen ABABABABABABAB.py')
def check_allplan_version(_build_ele: BuildingElement,
_version : str):
"""
Check the current Allplan version
Args:
build_ele: the building element.
version: the current Allplan version
Returns:
True/False if version is supported by this script
"""
# Support all versions
return True
def create_element(build_ele, doc):
"""
Creation of element
Args:
build_ele: the building element.
doc: input document
"""
# Define common style properties
common_props = AllplanSettings.AllplanGlobalSettings.GetCurrentCommonProperties()
common_props.GetGlobalProperties()
# Access the parameter property from *.pyp file
xl = build_ele.xlange.value
yl = build_ele.ylange.value
durchmesser = build_ele.durchmesser.value
form = build_ele.form.value
# Create a 2d Polygon
polygon = AllplanGeo.Polygon2D()
facestyle_prop = AllplanBasisElements.FaceStyleProperties()
facestyle_prop.FaceStyleID = 935
if form == "Eckig":
polygon += AllplanGeo.Point2D(0 - xl / 2,0 - yl / 2)
polygon += AllplanGeo.Point2D(0 + xl / 2,0 - yl / 2)
polygon += AllplanGeo.Point2D(0 + xl / 2,0 + yl / 2)
polygon += AllplanGeo.Point2D(0 - xl / 2,0 + yl / 2)
polygon += AllplanGeo.Point2D(0 - xl / 2,0 - yl / 2)
flache = AllplanBasisElements.FaceStyleElement(common_props,facestyle_prop,polygon)
else:
center = AllplanGeo.Point2D(0,0)
polygon = AllplanGeo.Arc2D(center, durchmesser / 2)
#----------------- create the PythonPart
pyp_util = PythonPartUtil()
pyp_util.add_pythonpart_view_2d(AllplanBasisElements.ModelElement2D(common_props, polygon, flache))
model_elem_list = pyp_util.create_pythonpart(build_ele)
handle_list = []
prev_ele = []
plac_po = None
multi_placement = True
create_ele_res = CreateElementResult(model_elem_list, handle_list, prev_ele, plac_po, multi_placement)
# Return a tuple with elements list and handles list
return create_ele_res
Der Fehler liegt in Zeile 96 mit der Meldung:
pyp_util.add_pythonpart_view_2d(AllplanBasisElements.ModelElement2D(common_props, polygon, flache))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Boost.Python.ArgumentError: Python argument types in
ModelElement2D.__init__(ModelElement2D, CommonProperties, Polygon2D, FaceStyleElement)
did not match C++ signature:
Also passt irgenwas nicht, wenn ich die die Stilfläche zum PP hinzufügen möchte.
Und die Frage wird dann auch noch auftreten, kann ich statt den 2D Polylinien auch den Kreis, falls in der IF Klausel der Arc ausegegeben wird, als geometry einsetzten?
Ich hoffe jemand kann mir helfen.
Gruss Sebastian