查看: 4994|回复: 23
收起左侧

[其他] 请教二次开发问题_如何[实现,批处理

[复制链接]
发表于 2009-1-10 15:57 | 显示全部楼层 |阅读模式 来自: 中国上海
;就是在出图后,对每个分段要进行一下统计,如最基本的页码标注,有哪个模块可以调用的呀

本人[初学阶段,学习编了一些程序,为什么都运行后没有效果的

用的PYTHONWIN2.3.3版的,好像是格式缩进问题,这要什么解决的~~

菜鸟,请各位高手帮忙指点一下~~
回复

使用道具 举报

龙船学院
 楼主| 发表于 2009-1-10 16:00 | 显示全部楼层 来自: 中国上海
还有明明我照着那些样例写的代码,什么运行不出结果的

我特地检查了一些相关的系统变量,都是符合要求的,什么运行不出所要的效果呀~~
回复 支持 反对

使用道具 举报

发表于 2009-1-10 20:47 | 显示全部楼层 来自: 中国上海
不是太明白你的意思,也许kcs_drafting可供你使用。通过图面上指定点的坐标取得文字。
python缩进要求很严格,习惯了就好。运行没有结果也要看看是否语法错误,你可以在适当的行后增加输出信息来判断出错位置。
回复 支持 反对

使用道具 举报

发表于 2009-1-10 21:38 | 显示全部楼层 来自: 中国湖北武汉
哦,高手之间的对话,学习,顶一下
回复 支持 反对

使用道具 举报

发表于 2009-1-10 22:32 | 显示全部楼层 来自: 中国江苏南通
kcs_ui.message_noconfirm('Too many entities to highlight!')
我都是用这个来显示想要知道的结果,可以显示变量或字符串或函数。
回复 支持 反对

使用道具 举报

发表于 2009-1-10 22:56 | 显示全部楼层 来自: 中国上海
是的,前提要导入kcs_ui模块
回复 支持 反对

使用道具 举报

发表于 2009-1-11 12:03 | 显示全部楼层 来自: 中国辽宁大连
如果是缩进的问题,建议先学好Python再考虑别的。
Tribon提供的例子是展示如何使用TBPrintSrv,而非直接拿来用的。要写批量打印程序起码要读懂例子。
考虑如下几句代码和你的环境是否相符:
  1. job.Drawings.AddDrawings(fnd.GetDrawings("MW*","SB_PDB")) # 将图纸库MW打头的图纸加入到打印作业中。

  2. job.Printer.SelectPrinter("\\\\NTSRV7\\P015") # 选择共享打印机,NTSRV7是网络上的一台计算机,P015是共享打印机名。
  3. job.PrintOptions.PrintToFile = 1 # 打印到文件开关,如果是想讲图纸打印出来,这句可以省略。
  4. job.PrintOptions.NameMask = "VBS*.PS" # 我没打印到文件过,这句不太清楚。可能是给打印到文件的文件命名,PS是打印到文件所生成的文件扩展名。
  5. # 如果要直接打印图纸,上面两句PrintOptions的设置是不需要的。
复制代码

[ 本帖最后由 yang827 于 2009-1-11 12:14 编辑 ]
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-1-11 12:58 | 显示全部楼层 来自: 中国上海
原帖由 黑白循环 于 2009-1-10 20:47 发表
不是太明白你的意思,也许kcs_drafting可供你使用。通过图面上指定点的坐标取得文字。
python缩进要求很严格,习惯了就好。运行没有结果也要看看是否语法错误,你可以在适当的行后增加输出信息来判断出错位置。


应该是kcs_draft吧

我是这样设想的,通过读取图纸库存中的分段图纸如B232*,对于图面上指定点的坐标位置判断是否存在文字(页码),存在则删除之,不存在则向该页面写入顺序页码.

但是页码这个东西是不是属于DRAWING中的内置属性呢?就是一个可以调用的参数,可以不用指定坐标位置来直接读写的呢?有的话,是在哪个函数模块的~~
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-1-11 13:05 | 显示全部楼层 来自: 中国上海
原帖由 yang827 于 2009-1-11 12:03 发表
如果是缩进的问题,建议先学好Python再考虑别的。
Tribon提供的例子是展示如何使用TBPrintSrv,而非直接拿来用的。要写批量打印程序起码要读懂例子。
考虑如下几句代码和你的环境是否相符:job.Drawings.AddDrawin ...


嗯 缩进很烦,总是出差错,我现在在学Python,边学边练

这例子还能读懂,呵呵 ,你都写的这么详细了

我现在还不用去想打印的问题,现在是要将待打印的图纸中加上页码.因为一个分段有3/400甚至更多,人工来填会出差错也费神费力

你看有什么需要提防的地方~~

我是这样设想的,通过读取图纸库存中的分段图纸如B232*,对于图面上指定点的坐标位置判断是否存在文字(页码),存在则删除之,然后进行不存在的操作,不存在则向该页面写入顺序页码.

但是页码这个东西是不是属于DRAWING中的内置属性呢?就是一个可以调用的参数,可以不用指定坐标位置来直接读写的呢?有的话,是在哪个函数模块的~~

[ 本帖最后由 everdmind 于 2009-1-11 13:11 编辑 ]
回复 支持 反对

使用道具 举报

发表于 2009-1-11 17:17 | 显示全部楼层 来自: 中国浙江舟山
用kcs_draft.text_new在指定坐标点插入文字(页码).
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-1-11 17:51 | 显示全部楼层 来自: 中国上海
原帖由 x1008yb 于 2009-1-11 17:17 发表
用kcs_draft.text_new在指定坐标点插入文字(页码).


,谢谢呵~~
我主要是想知道什么样可以对图纸库中的图纸进行顺序读写的,即类似批处理的(我的个人描述,呵呵)
,就是什么样可以抽出一个分段的图纸库,呵呵,我现在还是很不熟悉各个函数模块,
菜鸟,不要见笑呵
我现在翻帮助中

[ 本帖最后由 everdmind 于 2009-1-11 19:01 编辑 ]
回复 支持 反对

使用道具 举报

发表于 2009-1-11 20:52 | 显示全部楼层 来自: 中国辽宁大连
不好意思,没看明白问什么就回答,答非所问了。
获得图纸名可以用下面这段代码。

  1. import KcsObjectCriteria
  2. import kcs_db

  3. crit = KcsObjectCriteria.ObjectCriteria()
  4. crit.SetName(dwgName)
  5. alist = []
  6. kcs_db.object_list_get(crit, dbName, alist)
  7. [i.GetName() for i in alist]
复制代码

批量图纸操作,就是使用循环打开,写入,保存图纸就可以了。
写入页码使用kcs_draft.rule_text_new要比text要好,优点起码有如下两个:
  • 在Form事先定位好页码的位置,写入页码的时候不需要关心位置问题。
  • 修改的时候无需检查之前的设置,对rule直接写入就可以了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-1-11 21:50 | 显示全部楼层 来自: 中国上海
原帖由 yang827 于 2009-1-11 20:52 发表
不好意思,没看明白问什么就回答,答非所问了。
获得图纸名可以用下面这段代码。

import KcsObjectCriteria
import kcs_db

crit = KcsObjectCriteria.ObjectCriteria()
crit.SetName(dwgName)
alist = []
...


呵呵,YANG大哥,你终于来啦,我都翻了一下午DataExtraction VITESSE 的帮助了,还没翻到你的这部分代码

谢谢啦,我去试试看~~~
回复 支持 反对

使用道具 举报

发表于 2009-1-12 22:15 | 显示全部楼层 来自: 中国上海
楼主说不太明白怎样提取出dwg,我在这里根据杨兄的代码给你个例子,相信你就明白了:
import KcsObjectCriteria
import kcs_db
import kcs_ui

dwgName="123-*"        #要搜索的图纸名字
dbName="SB_PDB"     #要搜索的数据库
crit = KcsObjectCriteria.ObjectCriteria()
crit.SetName(dwgName)
alist = []                           #定义一个列表,存放搜索结果
kcs_db.object_list_get(crit, dbName, alist)
for i in alist:
    kcs_ui.message_noconfirm(i.GetName())    #循环输出图纸名字

这个就是提取指定分段图纸的代码,至于前面和后面的处理,就需要你自己根据程序功能适当拓展了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-1-13 01:32 | 显示全部楼层 来自: 中国上海
稀里糊涂的什么又可以运行了`~~
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-1-13 21:03 | 显示全部楼层 来自: 中国上海
严重感谢论坛几位高手哈
现在想问下以下[这个问题:

tbstartjob.exe  -application "Drafting" -script o:\tribon\m2\vitesse\examples\drafting\kcs_ex_draft10.py
echo "

这句话要放在什么环境下运行~~

是用批处理语言来写吗>?

什么设置环境变量的

[ 本帖最后由 everdmind 于 2009-1-13 21:05 编辑 ]
回复 支持 反对

使用道具 举报

发表于 2009-1-13 21:20 | 显示全部楼层 来自: 中国江苏南通

回复 18楼 everdmind 的帖子

没错,可以用批处理文件来执行,也可以放到高级编程语言里执行。
顺便说下,如果想后台运行后退出DRAFTING,可以在py文件里加上kcs_util.exit_program();
DRAFTING加上开关 -nosplash 和 -minimize
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-1-13 21:40 | 显示全部楼层 来自: 中国上海
那放到高级语言里执行,能不能举个例子哈~~

这个我看到过,不过还没实践过~~,呵呵
回复 支持 反对

使用道具 举报

发表于 2009-1-13 21:44 | 显示全部楼层 来自: 中国江苏南通

回复 20楼 everdmind 的帖子

各个高级编程语言调用外部命令的函数是不同的,如在DELPHI里。可以使用WINEXEC过程,具体要看具体使用的什么语言
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-1-13 21:59 | 显示全部楼层 来自: 中国上海

回复 21楼 syoregnew 的帖子

你能不能给个DOS运行例(代码)子哈,可以达到我的代码功能~~

我现在不可能那么深入,就想用BAT来完成~~
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-13 08:45

Powered by Imarine

Copyright © 2006, 龙船社区

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