def SelectTexts(): cor1 = Point2D() cor2 = Point2D() res = kcs_ui.point2D_req("请选择区域左上角", cor1) if res[0] == kcs_util.ok(): res = kcs_ui.point2D_req("请选择区域右下角", cor2) if res[0] == kcs_util.ok(): rect = Rectangle2D(cor1, cor2) region = CaptureRegion2D() region.SetRectangle(rect) region.Inside = 1 region.Cut = 1 hds = kcs_draft.text_capture(region) return hds return
def Grid(): """Create a grid on a new view""" res=kcs_ui.string_req('请输入格子的长,宽、列数,行数','30,10,8,5') if res[0]==kcs_util.ok(): w,h,m,n=[float(i) for i in res[1].split(',')] pt=Point2D() res=kcs_ui.point2D_req('请选择Grid左上角位置,回车设为原点',pt) if res[0]==kcs_util.ok(): csm=CurrentSubpictureManager() hd=kcs_draft.view_new('') csm.Set(hd) for i in range(n+1): #horizontal line p1=Point2D(pt.X,pt.Y-h*i) p2=Point2D(pt.X+w*m,pt.Y-h*i) kcs_draft.line_new(Rline2D(p1,p2)) for j in range(m+1): #vertical line p1=Point2D(pt.X+j*w,pt.Y) p2=Point2D(pt.X+j*w,pt.Y-h*n) kcs_draft.line_new(Rline2D(p1,p2)) csm.Back() elif res[0]==kcs_util.operation_complete(): pt=Point2D(0,0) csm=CurrentSubpictureManager() hd=kcs_draft.view_new('') csm.Set(hd) for i in range(n+1): #horizontal line p1=Point2D(pt.X,pt.Y-h*i) p2=Point2D(pt.X+w*m,pt.Y-h*i) kcs_draft.line_new(Rline2D(p1,p2)) for j in range(m+1): #vertical line p1=Point2D(pt.X+j*w,pt.Y) p2=Point2D(pt.X+j*w,pt.Y-h*n) kcs_draft.line_new(Rline2D(p1,p2)) csm.Back()
def Point3DCoord(): "show the coordinate of selected point" pt = Point2D() res = kcs_ui.point2D_req("请选择要查询的点", pt) if res[0] == kcs_util.ok(): res = kcs_util.tra_coord_ship(pt.X, pt.Y, "") if res[0] == 0: pt3d = Point3D(res[1], res[2], res[3]) res, fr, fr_offset = kcs_util.coord_to_pos(1, pt3d.X) res, lp_y, lp_y_offset = kcs_util.coord_to_pos(2, pt3d.Y) res, lp_z, lp_z_offset = kcs_util.coord_to_pos(3, pt3d.Z) fr_offset=round(fr_offset,2) lp_y_offset=round(lp_y_offset,2) lp_z_offset=round(lp_z_offset,2) x=round(pt3d.X,2) y=round(pt3d.Y,2) z=round(pt3d.Z,2) Msg("--"*25) Msg("二维点:" + str(pt)) Msg("三维坐标信息:") Msg("X: %s,FR%s %s" % (string.ljust(str(x), width), str(fr), _fmt(fr_offset))) Msg("Y: %s,LP%s %s" % (string.ljust(str(y), width), str(lp_y), _fmt(lp_y_offset))) Msg("Z: %s,LP%s %s" % (string.ljust(str(z), width), str(lp_z), _fmt(lp_z_offset))) Msg("--"*25)
def run(): stat=KcsStat_point2D_req.Stat_point2D_req() ct=CursorType() CursorTypes = {'CrossHair' : 1, 'RubberBand' : 2, 'RubberRectangle' : 3, 'RubberCircle' : 4, 'DragCursor' : 5} actions=CursorTypes.keys() bs=ButtonState() bs.EnableLock(1) bs.SetCheckedLock('V') pt=Point2D(2,3) while True: res=kcs_ui.choice_select('title','header',actions) if res[0]==kcs_util.ok(): #msg("%s:%s"%(res[1],CursorTypes.keys()[res[1]-1])) if res[1]==1: ct.SetCrossHair() elif res[1]==2: ct.SetRubberBand(pt) elif res[1]==3: ct.SetRubberRectangle(pt) elif res[1]==4: ct.SetRubberCircle(pt) elif res[1]==5: pass stat.SetCursorType(ct) stat.SetDefMode('ModeMidPoint') stat.SetHelpPoint(Point2D(0,0)) msg(ct) res,pt2=kcs_ui.point2D_req('msg',pt,stat,bs) msg(pt2) else: break
def CreateTable(li): """create table from a python list""" pt=Point2D() res=kcs_ui.point2D_req('Please pick the left-top corner of table.',pt) if res[0]==kcs_util.ok(): t=Table() t.ReadList(li) t.Draw()
def PrintUserResponse(): while True: pt = Point2D() res = kcs_ui.point2D_req('Esc to quit.', pt) if res[0] == util.cancel(): break else: msg('Your response is: %s' % res[0])
def PrintUserResponse(): while True: pt=Point2D() res=kcs_ui.point2D_req('Esc to quit.',pt) if res[0]==util.cancel(): break else: msg('Your response is: %s'%res[0])
def SelectText(): "select a text from drawing" pt=Point2D() res=kcs_ui.point2D_req('请选择文字',pt) if res[0]==kcs_util.ok(): try: hdText=kcs_draft.text_identify(res[1]) return hdText except: return None
def run(): pt = Point2D() res = kcs_ui.point2D_req('请选择中心点', pt) if res[0] == kcs_util.ok(): res2 = kcs_ui.string_req('请输入菱形的尺寸', '300,100') if res2[0] == kcs_util.ok(): li = [float(s) for s in res2[1].split(',')] if len(li) == 2: a, b = li else: raise 'wrong input' ktBasic.Diamond(res[1], a, b)
def run(): pt=Point2D() res=kcs_ui.point2D_req('请选择中心点',pt) if res[0]==kcs_util.ok(): res2=kcs_ui.string_req('请输入菱形的尺寸','300,100') if res2[0]==kcs_util.ok(): li=[float(s) for s in res2[1].split(',')] if len(li)==2: a,b=li else: raise 'wrong input' ktBasic.Diamond(res[1], a, b)
def DeleteNote(): pt=Point2D() res=kcs_ui.point2D_req("请选择要删除的批注",pt) if res[0]==kcs_util.ok(): try: hText=kcs_draft.text_identify(pt) comp=kcs_draft.element_parent_get(hText) compName=kcs_draft.subpicture_name_get(comp) if compName.startswith("NOTE_"): kcs_draft.element_delete(comp) except Exception,e: kcs_ui.message_noconfirm(e.message)
def ChangeColumnText(): pt=Point2D() res=kcs_ui.point2D_req('Please select the column',pt) if res[0]==kcs_util.ok(): hdView=kcs_draft.view_identify(res[1]) comp=kcs_draft.component_identify(res[1]) #get column index from comp name name=kcs_draft.subpicture_name_get(comp) colIndex=int(name[2:].split('X')[0]) table=Table(hdView) res=kcs_ui.string_req('Please enter the string','iknot') if res[0]==kcs_util.ok(): table.ChangeColumnText(colIndex, res[1])
def MoveColumn(): pt=Point2D() res=kcs_ui.point2D_req('Please select the column',pt) if res[0]==kcs_util.ok(): hdView=kcs_draft.view_identify(res[1]) comp=kcs_draft.component_identify(res[1]) #get column index from comp name name=kcs_draft.subpicture_name_get(comp) colIndex=int(name[2:].split('X')[0]) table=Table(hdView) res=kcs_ui.int_req('Please enter the offset',100) if res[0]==kcs_util.ok(): table.MoveColumn(colIndex, res[1])
def run(): pt=Point2D() res=kcs_ui.point2D_req('请选择中心点',pt) if res[0]==kcs_util.ok(): res2=kcs_ui.string_req('请输入外接圆半径、数量和旋转角度(默认为0)','100,6,0') if res2[0]==kcs_util.ok(): li=[float(s) for s in res2[1].split(',')] radius,number,angle=0.0,0.0,0.0 if len(li)==2: radius,number=li elif len(li)==3: radius,number,angle=li else: raise 'wrong input' ktBasic.Polygon(res[1], radius, number, angle)
def FormatSingle(): pt = Point2D() res = kcs_ui.point2D_req("请选择文字获取文字属性", pt) if res[0] == kcs_util.ok(): hd = kcs_draft.text_identify(pt) ori = Text() kcs_draft.text_properties_get(hd, ori) # old = kcs_draft.subpicture_current_get() # 当前图层 while True: "select single text" pt2=Point2D() res = kcs_ui.point2D_req("请选择要替换的文字", pt2) if res[0]==kcs_util.ok(): hdText=kcs_draft.text_identify(pt2) father = kcs_draft.element_parent_get(hdText) # 文字所在图层 t = Text() kcs_draft.text_properties_get(hdText, t) ori.SetString(t.GetString()) ori.SetPosition(t.GetPosition()) kcs_draft.element_delete(hdText) # 删除原文字 kcs_draft.subpicture_current_set(father) # 重设图层 kcs_draft.text_new(ori) # 写文字 else: break
def run(): pt = Point2D() res = kcs_ui.point2D_req('请选择中心点', pt) if res[0] == kcs_util.ok(): res2 = kcs_ui.string_req('请输入外接圆半径、数量和旋转角度(默认为0)', '100,6,0') if res2[0] == kcs_util.ok(): li = [float(s) for s in res2[1].split(',')] radius, number, angle = 0.0, 0.0, 0.0 if len(li) == 2: radius, number = li elif len(li) == 3: radius, number, angle = li else: raise 'wrong input' ktBasic.Polygon(res[1], radius, number, angle)
def CreateEmptyTable(): """ Create an m x n table without text. """ res=kcs_ui.string_req('please enter the column number,row number and the width of each cell', '5,3,30') if res[0]==kcs_util.ok(): li=res[1].split(',') m,n,width=int(li[0]),int(li[1]),float(li[2]) pt=Point2D() res=kcs_ui.point2D_req('Please pick the left-top corner of table.',pt) if res[0]==kcs_util.ok(): t=Table() t.Init(m, n, width, res[1]) t.Draw()
def run(): stat = KcsStat_point2D_req.Stat_point2D_req() ct = CursorType() CursorTypes = { 'CrossHair': 1, 'RubberBand': 2, 'RubberRectangle': 3, 'RubberCircle': 4, 'DragCursor': 5 } actions = CursorTypes.keys() bs = ButtonState() bs.EnableLock(1) bs.SetCheckedLock('V') pt = Point2D(2, 3) while True: res = kcs_ui.choice_select('title', 'header', actions) if res[0] == kcs_util.ok(): #msg("%s:%s"%(res[1],CursorTypes.keys()[res[1]-1])) if res[1] == 1: ct.SetCrossHair() elif res[1] == 2: ct.SetRubberBand(pt) elif res[1] == 3: ct.SetRubberRectangle(pt) elif res[1] == 4: ct.SetRubberCircle(pt) elif res[1] == 5: pass stat.SetCursorType(ct) stat.SetDefMode('ModeMidPoint') stat.SetHelpPoint(Point2D(0, 0)) msg(ct) res, pt2 = kcs_ui.point2D_req('msg', pt, stat, bs) msg(pt2) else: break
def Pick2DPoints(number=0,mode="ModeAuto"): """ Pick points until reach the number. number=0 means unlimited number. """ pts=[] index=0 action=kcs_util.ok() while index<number or number==0: pt=Point2D() stp=Stat_point2D_req() stp.SetDefMode(mode) action,pt=kcs_ui.point2D_req('ÇëÑ¡ÔñµÚ%s¸öµã'%(index+1),pt,stp) if action==kcs_util.ok(): pts.append(pt) elif action==kcs_util.operation_complete() and number==0: return pts elif action==kcs_util.cancel(): print 'operation canceled' return None index+=1 return pts
def FormatRegion(): pt = Point2D() res = kcs_ui.point2D_req("请选择文字获取文字属性", pt) if res[0] == kcs_util.ok(): hd = kcs_draft.text_identify(pt) ori = Text() kcs_draft.text_properties_get(hd, ori) objs = SelectTexts() old = kcs_draft.subpicture_current_get() # 当前图层 for obj in objs[1:]: # 重写文字 father = kcs_draft.element_parent_get(obj) # 文字所在图层 t = Text() kcs_draft.text_properties_get(obj, t) ori.SetString(t.GetString()) ori.SetPosition(t.GetPosition()) kcs_draft.element_delete(obj) # 删除原文字 kcs_draft.subpicture_current_set(father) # 重设图层 kcs_draft.text_new(ori) # 写文字 if len(old) == 3: kcs_draft.subpicture_current_set(old[2]) else: kcs_draft.subpicture_current_set()
def Pick2DPoints(number=0, mode="ModeAuto"): """ Pick points until reach the number. number=0 means unlimited number. """ pts = [] index = 0 action = kcs_util.ok() while index < number or number == 0: pt = Point2D() stp = Stat_point2D_req() stp.SetDefMode(mode) action, pt = kcs_ui.point2D_req('ÇëÑ¡ÔñµÚ%s¸öµã' % (index + 1), pt, stp) if action == kcs_util.ok(): pts.append(pt) elif action == kcs_util.operation_complete() and number == 0: return pts elif action == kcs_util.cancel(): print 'operation canceled' return None index += 1 return pts
def run(): actions=['View','Subview','Component','Element'] res,act=kcs_ui.choice_select('View info','Select the type',actions) if res==kcs_util.ok(): pt=Point2D() if act==1: ees=ktDraft.GetViews() printElements(ees) elif act==2: kcs_ui.point2D_req('Select',pt) hd=kcs_draft.view_identify(pt) ees=ktDraft.GetSubviews(hd) printElements(ees) elif act==3: kcs_ui.point2D_req('Select',pt) hd=kcs_draft.subview_identify(pt) ees=ktDraft.GetComponents(hd) printElements(ees) elif act==4: kcs_ui.point2D_req('Select',pt) hd=kcs_draft.component_identify(pt) ees=ktDraft.GetSubElements(hd) printElements(ees)
def AddNote(): res=kcs_ui.string_req("请输入标注内容") if res[0]==kcs_util.ok(): content=res[1] cor1=Point2D() cor2=Point2D() res=kcs_ui.point2D_req("请选择标注点",cor1) if res[0]==kcs_util.ok(): res=kcs_ui.point2D_req("请选择标注文字位置",cor2) if res[0]==kcs_util.ok(): #开始标注 #记录原来状态 old=kcs_draft.subpicture_current_get() #创建component subView=ktDraft.GetKtSubView(SUB_VIEW_NAME) #检查是否在KNOT_VIEW下 parent=kcs_draft.element_parent_get(subView) parentName=kcs_draft.subpicture_name_get(parent) if parentName!="KNOT_VIEW": return kcs_draft.subpicture_current_set(subView) compName="NOTE_"+str(GetID(subView)) comp=kcs_draft.component_new(compName) kcs_draft.subpicture_current_set(comp) #写文字 txt=Text(content) txt.SetPosition(cor2) txt.SetColour(Colour("Red")) txt.SetFont("黑体") txt.SetHeight(5) hTxt=kcs_draft.text_new(txt) #画边框 rect=Rectangle2D() rect=kcs_draft.element_extent_get(hTxt) offset=1 rect.SetCorner1(Point2D(rect.Corner1.X-offset,rect.Corner1.Y-offset)) rect.SetCorner2(Point2D(rect.Corner2.X+offset,rect.Corner2.Y+offset)) hd=kcs_draft.rectangle_new(rect) kcs_draft.element_colour_set(hd,Colour("Red")) #画引线 sta=cor1 end=rect.GetCorner1() if end.X<sta.X: end.SetX(end.X+rect.Corner2.X-rect.Corner1.X) if end.Y<sta.Y: end.SetY(end.Y+rect.Corner2.Y-rect.Corner1.Y) line=Rline2D(sta,end) hd=kcs_draft.line_new(line) kcs_draft.element_colour_set(hd,Colour("Red")) #画圆圈 circle=Circle2D(sta,2) hd=kcs_draft.circle_new(circle) kcs_draft.element_colour_set(hd,Colour("Red")) #恢复原来状态 if len(old)==3: kcs_draft.subpicture_current_set(old[2]) else: kcs_draft.subpicture_current_set()