yujianlai 发表于 2014-3-19 20:37:34

请高手帮忙修改一个旋转元件值的SKILL

主要是我们公司经常要调元件的值,很麻烦,比调丝印还那个,所以现在想在以前调REF自动旋转和到中心的基础上修改,修改成我现在对元件COMPONENT VALUE---〉SILKSCREEN_TOP自动旋转和到中心

yujianlai 发表于 2014-3-19 20:37:35

忘记了附件

Marcen 发表于 2014-3-19 21:14:18

很好的想法,顶起。

vivienluo 发表于 2014-3-19 22:05:43





自动调整,不需要手动去选择text
axlCmdRegister("mcenter" 'move_ref_center)
procedure( move_ref_center()
popup = axlUIPopupDefine(nil list(list("Done" `axlFinishEnterFun)))
axlUIPopupSet(popup)

axlClearSelSet()

axlSetFindFilter( ?enabledlist( "noall" "text")?onButtonslist( "noall" "text"))
curVisible = axlVisibleGet()
axlVisibleDesign(nil)
axlVisibleLayer("COMPONENT VALUE/SILKSCREEN_TOP" t);可自行修改调整的层面
axlVisibleLayer("COMPONENT VALUE/SILKSCREEN_BOTTOM" t);可自行修改调整的层面
alltexts = nil
axlClearSelSet()
axlAddSelectAll()
alltexts = axlGetSelSet()
when(alltexts
foreach(texts alltexts
sym = texts -> parent
when( sym
    comps_bbox = axlDBAltOrigin('center sym)
    comps_center_x = xCoord(comps_bbox)
    comps_center_y = yCoord(comps_bbox)
    comps_angle = sym -> rotation
    text_angle_a = texts -> rotation
    r_angle = comps_angle - text_angle_a

axlTransformObject(texts , ?angler_angle)
text_angle_b = texts -> rotation
when(90<=text_angle_b && text_angle_b<270
axlTransformObject(texts , ?angle180)
)
text_angle_c = texts -> rotation
text_center_bbox = axlDBAltOrigin('center texts)
excursion = axlGetParam(strcat("paramTextBlock:" texts->textBlock))->height

when(0<text_angle_c && text_angle_c<90
   text_center_x = xCoord(text_center_bbox)
   text_center_y = yCoord(text_center_bbox)
   text_angle_d = text_angle_c
   m_x = comps_center_x - text_center_x + 0.15 * excursion * sin(3.14159/180 * text_angle_d)
   m_y = comps_center_y - text_center_y - 0.15 * excursion* cos(3.14159/180 * text_angle_d)
)
   when(270<=text_angle_c && text_angle_c<360 || text_angle_c == 0
    text_center_x = xCoord(text_center_bbox)
    text_center_y = yCoord(text_center_bbox)
    text_angle_d = 360 - text_angle_c
    m_x = comps_center_x - text_center_x - 0.15 * excursion * sin(3.14159/180 * text_angle_d)
    m_y = comps_center_y - text_center_y - 0.15 * excursion * cos(3.14159/180 * text_angle_d)
   )
    axlTransformObject(texts , ?move list(m_x ,m_y) )
   )
   );end foreach
);end when
axlVisibleSet(curVisible)
axlVisibleLayer("COMPONENT VALUE/SILKSCREEN_TOP" t)
axlVisibleLayer("COMPONENT VALUE/SILKSCREEN_BOTTOM" t)
);end

yujianlai 发表于 2014-3-19 22:17:06

vivienluo 发表于 2014-3-19 22:05 static/image/common/back.gif
自动调整,不需要手动去选择text

感谢vivienluo的热心帮忙!

Marcen 发表于 2014-3-19 22:21:14

学习了,vivienluo厉害啊

yujianlai 发表于 2014-3-19 22:41:03

乱七八遭的,看看有没有用

jadystone 发表于 2014-3-19 22:49:48

yujianlai 发表于 2014-3-19 22:41 static/image/common/back.gif
乱七八遭的,看看有没有用

先收藏再说,谢谢。

祭司 发表于 2015-7-7 09:37:54

支持一下,学习ing

leilei4908 发表于 2015-7-24 19:21:12

学习。。。学习 。。。
页: [1] 2
查看完整版本: 请高手帮忙修改一个旋转元件值的SKILL