免费视频|新人指南|投诉删帖|广告合作|地信网APP下载

查看: 1490|回复: 7
收起左侧

生成创建标注脚本语句

  [复制链接]

185

主题

2898

铜板

13

好友

地信院士

Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15

积分
2398
发表于 2012-11-1 15:25 | 显示全部楼层 |阅读模式
在walkscript脚本编写中,往往对wkAnnotation, wkStyle等一些式样、类型的setInfo函数设置,一般人都会觉得比较困难。

有个简单的办法就是,可以根据已有的式样,反推脚本语句!

例如,在三值标注中,可以先在Walk主界面中,对文字的位置、文字、栏、绘线等进行设置好
1.png


2.png

然后,通过一个脚本,把这种式样生成一个脚本;
最后,只需要拷贝代码即可!


#include "wcAnnoConstant.h"

wkGeoset geoset;
wkView view;

array oAnnInfo =
{
    {10, "wcAnnoInsPos"     , "插入位置"},   
        {11, "wcAnnoInsPntX"    , "插入点与插入位置的偏移X"},        
        {12, "wcAnnoInsPntY"    , "插入点与插入位置的偏移Y"},        
        {13, "wcAnnoAngle"      , "旋转角度(以0.1度为单位)"},  
        {14, "wcAnnoFix"        , "块大小是否随比例缩放"},   
        {15, "wcAnnoCharH"      , "字符高度(以0.1mm为单位)"},  
        {16, "wcAnnoLineI"      , "文本行间隔"},  
        {17, "wcAnnoCharI"      , "文本的字符间隔"},  
        {18, "wcAnnoCharLeft"   , "文本字头的朝向:倾斜方向,分为左斜/右斜/垂直/不斜"},      
        {19, "wcAnnoCharAngle"  , "文本字头的倾斜角度"},      
        {20, "wcAnnoColTwo"     , "是否使用双栏"},
        {21, "wcAnnoColStager"  , "两栏是否错行"},      
        {22, "wcAnnoColWidthSet", "是否使用栏宽设定"},            
        {23, "wcAnnoCol1Width"  , "第一栏的栏宽"},      
        {24, "wcAnnoCol2Width"  , "获取标注的第二栏的栏宽"},      
        {25, "wcAnnoRowAlian"   , "文本左栏对齐方式"},      
        {26, "wcAnnoRow2Alian"  , "文本右栏是对齐方式"},      
        {27, "wcAnnoBlkBox"     , "是否绘制外包盒"},
        {28, "wcAnnoLinGapLine" , "左栏是否绘制行间线"},     
        {29, "wcAnnoLineWidth"  , "线宽"},      
        {30, "wcAnnoColLine"    , "是否绘制栏间线"},        
        {31, "wcAnnoLineRGapLin", "右栏是否绘制双数行间线"},            
        {32, "wcAnnoExline"     , "引出线类型"},
        {33, "wcAnnoExlineGap"  , "引出线距参考点间距"},      
        {34, "wcAnnoExlinePos"  , "引出线引向区位选择因子1"},      
        {35, "wcAnnoExlinePos2" , "引出线引向区位选择因子2"},     
        {36, "wcAnnoCircle"     , "取标注是否显示边框外接圆"},
        {37, "wcAnnoFeatureID"  , "地物来源(FeatureID),若无参考地物返回0"},      
        {38, "wcAnnoImageWidth" , "图像宽度"},     
        {39, "wcAnnoImageHeight", "图像高度"}
};

void PutScript(wkFile& file, wkLayer& layer, wkAnnotation oAnn)
{
        string s;
        file.puts("wkAnnotation AddAnnotation(wkLayer& layer, string strText, wkPoint ptRef) \n");
        file.puts("{\n");
        s.format("\twkAnnotation ann = layer.addAnnotation(strText, ptRef, %d);\n", oAnn.getInfo(wcAnnoCharH));
        file.puts(s);
        for (int i = 0; i < oAnnInfo.getSize(); ++i)
        {
                if (!oAnn.isDib())
                {
                        if (oAnnInfo[ i ][0] == 38 || oAnnInfo[ i ][0] == 39)
                                continue;
                }
                s.format("\tann.setInfo(%d/*%s*/,%d); //%s\n",
                                        oAnnInfo[ i ][0], oAnnInfo[ i ][1],
                                        oAnn.getInfo(oAnnInfo[ i ][0]), oAnnInfo[ i ][2]);
                file.puts(s);
        }
        file.puts("\n\treturn ann; \n");
        file.puts("}\n");
}

void main()
{
        string fileName = "c:\\script_ann.txt";
        wkFile file;
        if (!file.open(fileName, "wt"))
                return;
        
        array ids;
        for (int i = 0; i < geoset.getLayerCount(); ++i)
        {
                wkLayer layer = geoset.getLayerAt(i);
               
                for (int j = 0; j < layer.getASelectionCount(); ++j)
                {
                        wkAnnotation ann = layer.getASelectionAt(j);
                        PutScript(file, layer, ann);                                
                }
        }
        
        file.close();
        view.shell(fileName);
}

例如,根据以上代码反推生成一个脚本代码:
3_副本.jpg


现在,只需要拷贝上面的代码即可。


walkscript生成创建文字脚本语句.rar (16.11 KB, 下载次数: 9)

46

主题

2万

铜板

17

好友

地信学员

Rank: 12Rank: 12Rank: 12

积分
3110
发表于 2012-11-1 16:13 | 显示全部楼层
貌似暂时我用不到,但是看帖必会这是个好习惯,谢谢楼主

评分

参与人数 1铜板 +5 收起 理由
admin + 5 亲,你好快哦~~~

查看全部评分

回复 支持 反对

使用道具 举报

185

主题

2898

铜板

13

好友

地信院士

Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15

积分
2398
 楼主| 发表于 2012-11-1 16:42 | 显示全部楼层
薰衣草 发表于 2012-11-1 16:13
貌似暂时我用不到,但是看帖必会这是个好习惯,谢谢楼主

多谢支持!
回复 支持 反对

使用道具 举报

0

主题

9027

铜板

3

好友

高级工程师

Rank: 9Rank: 9Rank: 9

积分
1047
发表于 2012-11-1 21:14 | 显示全部楼层
收藏了……………………
回复 支持 反对

使用道具 举报

7711

主题

31万

铜板

892

好友

超级版主

地信网论坛贵宾

Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17

积分
128743

宣传勋章优秀斑主灌水勋章活跃勋章贡献勋章童话节勋章

QQ
发表于 2012-11-2 08:29 | 显示全部楼层
谢谢楼主分享
该会员没有填写今日想说内容.
回复 支持 反对

使用道具 举报

22

主题

444

铜板

3

好友

助理工程师

Rank: 5Rank: 5

积分
265
发表于 2012-11-7 13:58 | 显示全部楼层

很有用。

回复 支持 反对

使用道具 举报

22

主题

444

铜板

3

好友

助理工程师

Rank: 5Rank: 5

积分
265
发表于 2012-11-7 13:59 | 显示全部楼层


偷懒的时候,就是这样写代码滴。

自动生成代码很快。。。{:soso_e113:}
回复 支持 反对

使用道具 举报

6

主题

1万

铜板

20

好友

地信院士

Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15

积分
2988
发表于 2021-5-16 10:55 | 显示全部楼层
学习学习学习!
回复 支持 反对

使用道具 举报

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

本版积分规则

在线客服
快速回复 返回顶部 返回列表