Fem: Improve constraint tie - partial fixes #11653

This commit is contained in:
marioalexis
2024-01-26 11:08:26 -03:00
parent 7e5bb7361a
commit 3dbb4b3dd3
5 changed files with 47 additions and 38 deletions

View File

@@ -28,31 +28,13 @@
<layout class="QVBoxLayout" name="verticalLayout_5">
<item>
<layout class="QFormLayout" name="formLayout_1">
<property name="fieldGrowthPolicy">
<enum>QFormLayout::AllNonFixedFieldsGrow</enum>
</property>
<item row="1" column="1">
<widget class="Gui::InputField" name="if_tolerance">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
<widget class="Gui::QuantitySpinBox" name="spb_tolerance">
<property name="unit" stdset="0">
<string notr="true">mm</string>
</property>
<property name="minimumSize">
<size>
<width>80</width>
<height>20</height>
</size>
</property>
<property name="layoutDirection">
<enum>Qt::LeftToRight</enum>
</property>
<property name="text">
<string>0 mm</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
<property name="value" stdset="0">
<double>0.000000000000000</double>
</property>
<property name="singleStep">
<double>1.000000000000000</double>
@@ -60,9 +42,6 @@
<property name="maximum">
<double>1000000000.000000000000000</double>
</property>
<property name="unit" stdset="0">
<string notr="true">mm</string>
</property>
<property name="decimals" stdset="0">
<number>2</number>
</property>
@@ -74,7 +53,14 @@
<item row="1" column="0">
<widget class="QLabel" name="l_tolerance">
<property name="text">
<string>Tolerance: </string>
<string>Tolerance</string>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QCheckBox" name="ckb_adjust">
<property name="text">
<string>Enable Adjust</string>
</property>
</widget>
</item>
@@ -87,9 +73,9 @@
</widget>
<customwidgets>
<customwidget>
<class>Gui::InputField</class>
<extends>QLineEdit</extends>
<header>Gui/InputField.h</header>
<class>Gui::QuantitySpinBox</class>
<extends>QWidget</extends>
<header>Gui/QuantitySpinBox.h</header>
</customwidget>
</customwidgets>
<resources/>

View File

@@ -46,5 +46,14 @@ class ConstraintTie(base_fempythonobject.BaseFemPythonObject):
"App::PropertyLength",
"Tolerance",
"Geometry",
"set max gap between tied faces"
"Set max gap between tied faces"
)
obj.Tolerance = "0.0 mm"
obj.addProperty(
"App::PropertyBool",
"Adjust",
"Geometry",
"Adjust connected nodes"
)
obj.Adjust = False

View File

@@ -70,10 +70,13 @@ def write_constraint(f, femobj, tie_obj, ccxwriter):
# floats read from ccx should use {:.13G}, see comment in writer module
tolerance = tie_obj.Tolerance.getValueAs("mm").Value
adjust = ""
if not tie_obj.Adjust:
adjust = ", ADJUST=NO"
f.write(
"*TIE, POSITION TOLERANCE={:.13G}, ADJUST=NO, NAME=TIE{}\n"
.format(tolerance, tie_obj.Name)
"*TIE, POSITION TOLERANCE={:.13G}{}, NAME=TIE{}\n"
.format(tolerance, adjust, tie_obj.Name)
)
ind_surf = "TIE_IND{}".format(tie_obj.Name)
dep_surf = "TIE_DEP{}".format(tie_obj.Name)
f.write("{},{}\n".format(dep_surf, ind_surf))
f.write("{}, {}\n".format(dep_surf, ind_surf))

View File

@@ -52,10 +52,15 @@ class _TaskPanel:
FreeCAD.getHomePath() + "Mod/Fem/Resources/ui/ConstraintTie.ui"
)
QtCore.QObject.connect(
self.parameterWidget.if_tolerance,
self.parameterWidget.spb_tolerance,
QtCore.SIGNAL("valueChanged(Base::Quantity)"),
self.tolerance_changed
)
QtCore.QObject.connect(
self.parameterWidget.ckb_adjust,
QtCore.SIGNAL("toggled(bool)"),
self.adjust_changed
)
self.init_parameter_widget()
# geometry selection widget
@@ -67,7 +72,7 @@ class _TaskPanel:
)
# form made from param and selection widget
self.form = [self.parameterWidget, self.selectionWidget]
self.form = [self.selectionWidget, self.parameterWidget]
def accept(self):
# check values
@@ -94,6 +99,7 @@ class _TaskPanel:
elif msgBox.clickedButton() == ignoreButton:
pass
self.obj.Tolerance = self.tolerance
self.obj.Adjust = self.adjust
self.obj.References = self.selectionWidget.references
self.recompute_and_set_back_all()
return True
@@ -112,7 +118,12 @@ class _TaskPanel:
def init_parameter_widget(self):
self.tolerance = self.obj.Tolerance
self.parameterWidget.if_tolerance.setText(self.tolerance.UserString)
self.adjust = self.obj.Adjust
self.parameterWidget.spb_tolerance.setProperty("value", self.tolerance)
self.parameterWidget.ckb_adjust.setChecked(self.adjust)
def tolerance_changed(self, base_quantity_value):
self.tolerance = base_quantity_value
def adjust_changed(self, bool_value):
self.adjust = bool_value

View File

@@ -18608,7 +18608,7 @@ Evolumes
** Tie Constraints
** ConstraintTie
*TIE, POSITION TOLERANCE=25, ADJUST=NO, NAME=TIEConstraintTie
TIE_DEPConstraintTie,TIE_INDConstraintTie
TIE_DEPConstraintTie, TIE_INDConstraintTie
***********************************************************
** At least one step is needed to run an CalculiX analysis of FreeCAD