// 3点間の長さと、2辺の長さの比を求めます // パース型枠にパターンをフィットさせたい時などにお使いください。 public XMLEditor INK_ID=GETID(" - Inkscape","gdkWindowToplevel",0.1) ifb INK_ID < 0 MsgBox("Inkscapeが起動してません") Exit endif clipboard=GetStr(0) CtrlWin(INK_ID,activate) msg_x=val(Status(INK_ID,St_x))+val(Status(INK_ID,St_width)/2)-160 msg_y=val(Status(INK_ID,St_y))+32 SCKEY(INK_ID,VK_SHIFT,VK_F6) KBD(VK_SHIFT,2,40) MsgBox("2辺の長さと、その2辺の比を求めます。<#cr>ベジェツールを使用して始点〜挟角〜終点の3点間を結んで下さい。"+_ "<#cr>パスを閉じる必要はありません。",BTN_OK,msg_x,msg_y,BTN_OK) bs="\" caption=GetStr(INK_ID,0,1) filename=Copy(caption,Val(pos(bs,caption,-1))+1,Val(pos(" - ",caption,-1)-1)-Val(pos(bs,caption,-1))) if pos(" (outline)",filename)>1 then filename=Chgmoj(filename," (outline)","") SCKEY(INK_ID,VK_ESC) SCKEY(INK_ID,VK_SHIFT,VK_TAB) KBD(VK_SHIFT,2,40) SCKEY(INK_ID,VK_F2) SCKEY(INK_ID,VK_CTRL,A) KBD(VK_CTRL,2,40) SCKEY(INK_ID,VK_SHIFT,L) KBD(VK_SHIFT,2,40) SCKEY(INK_ID,VK_SHIFT,VK_CTRL,X) KBD(VK_SHIFT,2,40) KBD(VK_CTRL,2,40) LOCKHARD(True) // XMLエディタ XMLEditor=GETID(filename+": XMLエディタ(X) (Shift+Ctrl+X)","gdkWindowToplevel",-1) //XMLEditor=GETID(filename+": XML Editor (Shift+Ctrl+X)","gdkWindowToplevel",-1) CtrlWin(XMLEditor,activate) tab3() value_copy() node_d=GetStr(0) ifb pos("M",node_d)<>1 ifb pos("<#Tab>",node_d)>=1 KBD(VK_SHIFT,1,40) tab3() KBD(VK_SHIFT,2,40) value_copy() node_d=GetStr(0) elseif node_d="0" KBD(VK_ESC,0,40) KBD(VK_TAB,0,40) KBD(VK_TAB,0,40) value_copy() node_d=GetStr(0) elseif (node_d=" d") or (node_d=" ") KBD(VK_SHIFT,1,40) KBD(VK_TAB,0,40) KBD(VK_TAB,0,40) KBD(VK_SHIFT,2,40) value_copy() node_d=GetStr(0) elseif node_d=clipboard tab3() value_copy() node_d=GetStr(0) endif endif LOCKHARD(False) ifb pos("M ",node_d)=0 MsgBox("座標取得に失敗しました ><;") Exit elseif pos(" M ",node_d)=1 node_d=Chgmoj(node_d," M ","M ") endif CtrlWin(INK_ID,activate) SCKEY(INK_ID,VK_DELETE) Sleep(0.2) x_1=Copy(node_d,val(pos(" ",node_d,1))+1,(val(pos(",",node_d,1))-1)-(val(pos(" ",node_d,1)))) y_1=Copy(node_d,val(pos(",",node_d,1))+1,(val(pos(" ",node_d,2))-1)-(val(pos(",",node_d,1)))) Sleep(0.2) x_2=Copy(node_d,val(pos(" ",node_d,3))+1,(val(pos(",",node_d,2))-1)-(val(pos(" ",node_d,3)))) y_2=Copy(node_d,val(pos(",",node_d,2))+1,(val(pos(" ",node_d,4))-1)-(val(pos(",",node_d,2)))) Sleep(0.2) x_3=Copy(node_d,val(pos(" ",node_d,5))+1,(val(pos(",",node_d,3))-1)-(val(pos(" ",node_d,5)))) ifb pos("z",node_d)>1 y_3=Copy(node_d,val(pos(",",node_d,3))+1,(val(pos(" ",node_d,6))-1)-(val(pos(",",node_d,3)))) else y_3=Copy(node_d,val(pos(",",node_d,3))+1,(val(length(node_d)))-(val(pos(",",node_d,3)))) endif Sleep(0.2) var_1=sqrt(power((val(x_2)-val(x_1)),2)+power((val(y_2)-val(y_1)),2)) var_2=sqrt(power((val(x_3)-val(x_2)),2)+power((val(y_3)-val(y_2)),2)) var_3=val(var_2)/val(var_1) SendStr(0,"*"+var_3+"=") Sleep(0.2) MsgBox("1stノード〜2ndノード間 = "+var_1+" px<#cr>2ndノード〜3rdノード間 = "+var_2+" px<#cr><#cr>"+_ "長さの比 = 1 : "+var_3) procedure tab3() Sleep(0.2) KBD(VK_TAB,0,40) KBD(VK_TAB,0,40) KBD(VK_TAB,0,40) Exit fend procedure value_copy() SCKEY(XMLEditor,VK_CTRL,VK_HOME) KBD(VK_CTRL,2,40) KBD(VK_SPACE,0,40) SCKEY(XMLEditor,VK_CTRL,A) KBD(VK_CTRL,2,40) SCKEY(XMLEditor,VK_CTRL,C) KBD(VK_CTRL,2,40) Exit fend