原点设置(转)缩小设计尺寸(skill案例)查找板子边界(源码)
axlCmdRegister( "Originset" 'Originset )axlCmdRegister( "FitSize" 'FitSize )
defun( Originset ()
vcPointxy = car(axlExtentDB())
;invert the sense of the x coordinate
vc_x = minus( car( vcPointxy ) )
;invert the sense of the y coordinate
vc_y = minus( car( cdr( vcPointxy ) ) )
;put the x and y back together as a point list
vcNewPointxy = list( vc_x vc_y )
;change the origin to the new point
vcOChange = axlDBChangeDesignOrigin( vcNewPointxy )
axlUIWPrint(nil "Complete Set 00 to Origin!")
nil ;返回空值,可以直接done
);end defun
procedure(FitSize()
prog((extents1)
extents1 = axlExtentDB('obstacle)
extents1 = bBoxAdd(extents1 '((-100 -100) (100 100)))
axlDBChangeDesignExtents(extents1)
axlUIWPrint(nil "Complete Fit Size!")
)
)
/*****下面代码可用来查找板子上所有元素的边界,有时会有bug,可替代上面的FitSize()函数***************
axlCmdRegister("xyfitsize"`xyfitsize)
procedure(xyfitsize()
prog((segments_dbid segments_dbids l_dbids list_x list_y x_max x_min y_max y_min a)
axlClearSelSet()
axlVisibleDesign(t)
axlVisibleUpdate(t)
axlSetFindFilter(?enabled `("NOALL" "alltypes") ?onButtons `("alltypes"))
axlAddSelectAll()
setq(l_dbids axlGetSelSet())
when(l_dbids
setq(list_x nil)
setq(list_y nil)
foreach(l_dbid l_dbids setq(segments_dbids getq(l_dbid segments))
foreach(segments_dbid segments_dbids
setq(x1 car(car(getq(segments_dbid startEnd))));先得到start的值,再得到x的值。
setq(y1 cadr(car(getq(segments_dbid startEnd)))) ;先得到start的值,再得到y的值。
setq(x2 car(cadr(getq(segments_dbid startEnd)))) ;先得到end的值,再得到x的值。
setq(y2 cadr(cadr(getq(segments_dbid startEnd))));;先得到end的值,再得到y的值。
setq(list_x append1(list_x x1))
setq(list_x append1(list_x x2))
setq(list_y append1(list_y y1))
setq(list_y append1(list_y y2))
);endforeach
);endforeach
);endwhen
;axlClearSelSet()
setq(x_max car(sort(list_x quote(greaterp))))
setq(x_min car(sort(list_x quote(lessp))))
setq(y_max car(sort(list_y quote(greaterp))))
setq(y_min car(sort(list_y quote(lessp))))
a=list(list(x_min y_min) list(x_max y_max))
a = bBoxAdd(a '((-100 -100) (100 100)))
axlUIWPrint(nil "Complete Fit Size!")
);endprog
);endprocedure
**************************************************************************************/
大佬,设计页面的尺寸也是这个EXTENS吗这个 -100 100 这个是怎么个换算方法的?比如我要画一个 50000 50000的 尺寸
winskillabc 发表于 2025-3-27 09:41
大佬,设计页面的尺寸也是这个EXTENS吗这个 -100 100 这个是怎么个换算方法的?比如我要画一个 50000 50000的 ...
这个是我觉得缩小到极限看着不舒服,自己就加了下大小,这个需要加单位检测函数来加才更合理
页:
[1]