Loading files
This file is pinned to the selected release. Download the original to open it in your design tool.
3d097a032This file is pinned to the selected release. Download the original to open it in your design tool.
set subgroup modalg
set calcul "p"
set type "i"
proc OFFSETSHAPE {distance faces calcul type} {
uplevel #0 explode s f
uplevel #0 offsetparameter 1e-7 $calcul $type
uplevel #0 offsetload s $distance $faces
uplevel #0 offsetperform result
}
proc ProjectCurvePointToPlaneAlongDir {curve param pln {dir {}}} {
upvar $pln p
upvar $curve c
cvalue c $param x y z
if {[llength $dir] == 0 } {
# project to plane along the normal
regexp {Axis :([-0-9.+eE]+), ([-0-9.+eE]+), ([-0-9.+eE]+)} [dump p] full dx dy dz
lappend dir $dx $dy $dz
}
line ln x y z [lindex $dir 0] [lindex $dir 1] [lindex $dir 2]
intersect pt ln p
regexp {Point : ([-0-9.+eE]+), ([-0-9.+eE]+), ([-0-9.+eE]+)} [dump pt] full x y z
set pntOnPlane {}
lappend pntOnPlane $x $y $z
return $pntOnPlane
}
proc CheckProjectionToPlane {nbSamples origCurve origParam0 origParam1 projCurve projParam0 projParam1 pln {dir {}} {tolerance 1.e-7}} {
upvar $pln p
upvar $origCurve origC
upvar $projCurve projC
set isOk 1
for {set i 0} {$i <= $nbSamples} {incr i} {
set parOrig [expr $origParam0 + ($origParam1 - $origParam0) * $i / $nbSamples]
set parProj [expr $projParam0 + ($projParam1 - $projParam0) * $i / $nbSamples]
set pnt [ProjectCurvePointToPlaneAlongDir origC $parOrig p $dir]
cvalue projC $parProj X Y Z
set dx [expr [lindex $pnt 0]-[dval X]]
set dy [expr [lindex $pnt 1]-[dval Y]]
set dz [expr [lindex $pnt 2]-[dval Z]]
if {[expr $dx*$dx + $dy*$dy + $dz*$dz] < [expr $tolerance*$tolerance]} {
puts "OK: Projection correct"
} else {
puts "ERROR: Projection incorrect"
set isOk 0
}
}
return $isOk
}