查看: 6170|回复: 20
收起左侧

[Tribon] tribon 二次开发 抽取数据 3D船体模型

  [复制链接]
发表于 2011-7-21 09:33 | 显示全部楼层 |阅读模式 来自: 中国山东青岛
本帖最后由 lzt20007 于 2011-7-28 13:29 编辑

小弟初学tribon,遇到很多问题,特来求救。希望各位大哥、大姐帮帮忙啊!
      是这样的:我想写个程序,用来从tribon中抽取船体(HULL)的三维模型(3D DXF)。程序运行中出现了错误,但是查看日志却不知道为什么错了(kcsmodel.model这句!)。
程序在tribon自带的vitesse中调试,想把dxf文件导出到"c\dxf\"中。源代码如下:

import kcs_ui
import KcsVector3D
import KcsPoint2D
import kcs_draft
import kcs_gui
import kcs_util
import kcs_db
import kcs_dex
from KcsObjectCriteria import ObjectCriteria
import os

def GetPanelsInBlock(blockname):
  panelList = []
  st = "HULL.BLOCK('" + blockname + "').PANEL(*).NAME"
  kcs_ui.message_noconfirm("st: " + st)
  if kcs_dex.extract(st) == 0:
    dataType = kcs_dex.next_result()
    while dataType >= 0:
      if 3 == dataType:
        panelName = kcs_dex.get_string()
        panelList.append(panelName)
      dataType = kcs_dex.next_result()
  return panelList

def Export3D(dbtype,blockname,leavel):
  panelList = GetPanelsInBlock(blockname)
  if 1 == kcs_draft.dwg_current():
    kcs_draft.dwg_close()
  try:
    kcs_draft.dwg_new("test","",dbtype)
  except:
    kcs_ui.message_noconfirm("dwg_new" + kcs_draft.error)
  
  x = kcs_draft.view_new("View_new")#
  for panel in panelList:
    modeltype = "plane panel"
    try:
      model = KcsModel.Model( modeltype, panel)    <------------------------------------------错误在这里!!!!
      kcs_ui.message_noconfirm("KcsModel.Model next: " + panel)
    except:
      kcs_ui.message_noconfirm("KcsModel.Model() Error!" )
    try:
      kcs_draft.model_draw(model)
    except:
      kcs_ui.message_noconfirm("model_draw " + kcs_draft.error)
      modeltype = "curved panel"
      model = KcsModel.Model( modeltype, (panel))
      kcs_draft.model_draw(model)
      
  y = []
  y.append(x)
  try:
    kcs_draft.dwg_dxf_3d_export(blockname,y,leavel)
  except:
    kcs_ui.message_noconfirm("dwg_dxf_3d_export" + kcs_draft.error)






  #-------------------------main()----------------------
try:
  level = 3
  list = []
  kcs_db.object_list_get(ObjectCriteria(),"SB_OGDB",list)
  list = map(lambda x : x.GetName(), list)
  n = len(list)
  kcs_ui.message_noconfirm("-------checking drawing names--------")
  for i in range(n):
    kcs_ui.message_noconfirm(" %d : "%i + list)
  
  req = kcs_ui.answer_req("prompt","There are %d piece of drawing.Do you want to export."%n)
  if req == kcs_util.yes():
    if not os.path.exists('c:\dxf'):
      os.makedirs(r'c:\dxf')
    for i in range(1):
      name = list
      dxfname = name.replace(":","_")
      Export3D("SB_OGDB",dxfname,level)
  kcs_ui.message_confirm("Export is succeed")
except:
  kcs_ui.message_confirm("Error in Main()!") #"Error in Main()!"


  就这么多分了,各位船友们帮帮啊!!!
回复

使用道具 举报

龙船学院
 楼主| 发表于 2011-7-21 09:35 | 显示全部楼层 来自: 中国山东青岛
还是先顶一吧。。。。
回复 支持 反对

使用道具 举报

发表于 2011-7-22 09:33 | 显示全部楼层 来自: 中国山东青岛
先顶一下再说吧,  啊
回复 支持 反对

使用道具 举报

发表于 2011-7-22 09:51 | 显示全部楼层 来自: 中国辽宁大连
没有import KcsModel
回复 支持 反对

使用道具 举报

发表于 2011-7-22 17:00 | 显示全部楼层 来自: 中国山东烟台
no responding
回复 支持 反对

使用道具 举报

发表于 2011-7-22 22:45 | 显示全部楼层 来自: 中国山东
看不懂啊
回复 支持 反对

使用道具 举报

发表于 2011-7-23 16:04 | 显示全部楼层 来自: 中国江苏镇江
楼主哪的啊?
我也在做这个哎!
回复 支持 反对

使用道具 举报

发表于 2011-7-23 20:04 | 显示全部楼层 来自: 中国上海
这个问题有市场商业价值,

lz加油。。。。。。。。。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-7-23 23:25 | 显示全部楼层 来自: 中国天津
多谢各位的帮忙,这两天一堆事!没看到有人回帖。。。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-7-23 23:27 | 显示全部楼层 来自: 中国天津
本帖最后由 lzt20007 于 2011-7-23 23:36 编辑

多谢各位的帮忙,这两天一堆事!没看到有人回帖。。。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-7-23 23:29 | 显示全部楼层 来自: 中国天津
回复 4# yang827


那为什么日志里边不提示呢?不管怎样回去公司试试。。呵呵,现在电脑上没有tribon。。。。
回复 支持 反对

使用道具 举报

发表于 2011-7-24 09:45 | 显示全部楼层 来自: 中国辽宁大连
回复  yang827


那为什么日志里边不提示呢?不管怎样回去公司试试。。呵呵,现在电脑上没有tribon。。 ...
lzt20007 发表于 2011-7-23 23:29



    因为你用try把提示跳过了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-7-25 09:59 | 显示全部楼层 来自: 中国山东青岛
回复 12# yang827


    加上import kcsmodel这句,果然就好了!
    感激不尽了!!!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-7-25 10:05 | 显示全部楼层 来自: 中国山东青岛
但是还有个问题:现在是在tribon中的vitesse中运行的,如何能在自己的程序中访问服务器中的tribon数据库呢?这个应该可以做到吧?
回复 支持 反对

使用道具 举报

发表于 2011-7-25 16:11 | 显示全部楼层 来自: 中国上海
但是还有个问题:现在是在tribon中的vitesse中运行的,如何能在自己的程序中访问服务器中的tribon数据库呢? ...
lzt20007 发表于 2011-7-25 10:05



    我记得tribon提供的外部接口没有类似dwg_dxf_3d_export的功能,你可以在外部程序中调用vitess来曲线实现你要的效果
回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-7-26 13:40 | 显示全部楼层 来自: 中国山东青岛
回复 15# bw01


    这位大哥很专业啊!
    确实是这样的,只能在自己的程序中通过命令行方式调用类似tbstartjob.exe "drafting" -script "c:\test.py" ...这种方式调用vitesse导出3D船型。
   
   但是,还有个问题,想请教一下:怎么得到tirbon中的工程及其下的分段列表?
   这样可以自己选择导出哪些分段。。
回复 支持 反对

使用道具 举报

发表于 2011-7-27 14:53 | 显示全部楼层 来自: 中国上海
回复  bw01


    这位大哥很专业啊!
    确实是这样的,只能在自己的程序中通过命令行方式调用类似t ...
lzt20007 发表于 2011-7-26 13:40



    用tbdex可以实现
回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-7-27 16:45 | 显示全部楼层 来自: 中国山东青岛
用tbdex可以实现
bw01 发表于 2011-7-27 14:53



        具体怎么写呢?
    我在sx700.exe(和tbdexint.exe效果一样吧?)中输入“help” 得到如下列表:
ACCMMODATION
CABLE
COMPONENT
DIAGRAM
DRAWING
EQUIPMENT
HULL
PIPE
PLACUOL
STRUCTURE
TRW
VENT
VOLUME

   这里面那个是工程呢?
   如果不在这里面,那么具体用什么语句可以得到呢?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-7-28 13:57 | 显示全部楼层 来自: 中国山东青岛
just for refresh....
回复 支持 反对

使用道具 举报

发表于 2011-7-28 13:59 | 显示全部楼层 来自: 中国上海
帮助文件,developer's toolkit, data extraction
建议你通读一遍,里面有非常详细的说明和使用例子
这个问题三言两语说不清
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|标签|免责声明|龙船社区

GMT+8, 2024-11-10 23:47

Powered by Imarine

Copyright © 2006, 龙船社区

快速回复 返回顶部 返回列表