Jeszcze jeden "przepis" który mi się przydał:
https://forum.linuxcnc.org/22-pyvcp/302 ... custom-xml
W podglądzie wyświetlane są wymiary zewnętrzne, można je wyłączyć w menu "Widok - pokaż wymiary". Potrzebne mi były współrzędne środka i zrobiłem to tak:
Do custom_postgui.hal pobranie środków z "przepisu"
Kod: Zaznacz cały
net srodekx pyvcp.srodekx.00 <= boundaries.mid_lim_x
net srodeky pyvcp.srodeky.00 <= boundaries.mid_lim_y
net srodekz pyvcp.srodekz.00 <= boundaries.mid_lim_z
Do custompanel.xml wyświetlenie ich:
Kod: Zaznacz cały
<labelframe text="srodki">
<font>("Helvetica",10)</font>
<hbox>
<number>
<halpin>"srodekx.00"</halpin>
<format>"4.2f"</format>
</number>
<number>
<halpin>"srodeky.00"</halpin>
<format>"4.2f"</format>
</number>
<number>
<halpin>"srodekz.00"</halpin>
<format>"4.2f"</format>
</number>
</hbox>
</labelframe>
Aby to zadziałało trzeba dopisać do .axisrc w katalogu domowym:
Kod: Zaznacz cały
if hal_present:
mycomp = hal.component("boundaries")
mycomp.newpin("max_lim_x",hal.HAL_FLOAT,hal.HAL_OUT)
mycomp.newpin("min_lim_x",hal.HAL_FLOAT,hal.HAL_OUT)
mycomp.newpin("mid_lim_x",hal.HAL_FLOAT,hal.HAL_OUT)
mycomp.newpin("max_lim_y",hal.HAL_FLOAT,hal.HAL_OUT)
mycomp.newpin("min_lim_y",hal.HAL_FLOAT,hal.HAL_OUT)
mycomp.newpin("mid_lim_y",hal.HAL_FLOAT,hal.HAL_OUT)
mycomp.newpin("max_lim_z",hal.HAL_FLOAT,hal.HAL_OUT)
mycomp.newpin("min_lim_z",hal.HAL_FLOAT,hal.HAL_OUT)
mycomp.newpin("mid_lim_z",hal.HAL_FLOAT,hal.HAL_OUT)
mycomp.ready()
if vars.metric.get():
conv = 1
else:
conv = 1/25.4
# this function is called at [DISPLAY]CYCLE_TIME interval
def user_live_update():
min_extents = from_internal_units(o.canon.min_extents, conv)
max_extents = from_internal_units(o.canon.max_extents, conv)
mycomp['min_lim_x'] = min_extents[0]
mycomp['max_lim_x'] = max_extents[0]
mycomp['mid_lim_x'] = min_extents[0] + (max_extents[0] - min_extents[0])/2
mycomp['min_lim_y'] = min_extents[1]
mycomp['max_lim_y'] = max_extents[1]
mycomp['mid_lim_y'] = min_extents[1]+ (max_extents[1] - min_extents[1])/2
mycomp['min_lim_z'] = min_extents[2]
mycomp['max_lim_z'] = max_extents[2]
mycomp['mid_lim_z'] = min_extents[2]+ (max_extents[2] - min_extents[2])/2
Przykład pokazuje jak dobrać się również do innych konstrukcji jak ta "(max_extents[0] - min_extents[0])/2" z
linuxcnc.