连续修改

1:点击菜单”文字”->”连续修改”

2:选择需要修改的文字,支持文字和多行文字

3:依次弹出编辑对话框

连续修改

4:修改后应用

发表在 CAD好帮手教程 | 标签为 , | 留下评论

批量修改

1:点击菜单”文字”->”批量修改”

2:选择需要修改的文字,支持文字和多行文字

3:弹出编辑对话框

批量修改

支持批量修改文字内容,字体样式,字高

支持统一文字样式和字高

支持字高整体增大或减小

支持字高整体放大或缩小

4:点击确定后完成修改

发表在 CAD好帮手教程 | 标签为 , | 留下评论

对象均布

1:点击菜单”编辑工具”->”对象均布”

2:选择需要均布的对象(至少三个)

3:弹出操作对话框

对象均布

4:选择左右分布,上下分布以及分布范围

5:点击确定应用均布,点击取消或者关闭恢复到原来的状态了。

发表在 CAD好帮手教程 | 标签为 , | 留下评论

实体对齐

1:点击菜单”编辑工具”->”实体对齐”

2:选择需要对齐的实体,注意:以最后一个选择的对象为对齐基准

3:弹出对齐对话框

实体对齐

可以选择X方向:左对齐,居中对齐,右对齐

                  Y方向:顶部对齐,居中对齐,底部对齐

可以选择

对齐指定对象

对齐指定点

对齐选择集边框

点击确定,对齐将会应用,点击取消或者关闭就会恢复到原来的状态

发表在 CAD好帮手教程 | 标签为 , | 留下评论

WordPress采集也很强大!WordPress采集插件大全

采集?貌似不是WordPress的强项,wordpress 插件数以万计,唯独聚合/采集类的插件比较少。下面是推荐的6款wordpress RSS聚合/采集插件,希望对大家有用。
一,BDP RSS Aggregator
通过BDP RSS Aggregator 这个wordpress 插件,可以聚合多个blog的内容。适用于拥有多个博客的blogger,或者资源聚合和分享类的blogger,以及群组blogger。
BDP RSS Aggregator 插件主要是聚合标题以及部分摘要,并不会全文现实内容,也不会把对方的文章导入到自己的数据库里面。详见 aggregated blog feeds:聚合多个博客的内容一文。
二,WP-o-Matic
WP-o-Matic 插件是博客联盟见过的最狠的一个 wordpress 采集插件——只需在后台设定 Rss 源以及采集的时间,WP-o-Matic就会自动执行。它甚至可以将对方网站的附件以及图片等都采集,跟国内的cms系统有得一拼,完全无需站长耗心耗力。
三,FeedWordPress
FeedWordPress 是一个rss 聚合插件,可以聚合其他博客的内容源现实到自己的博客上,并且是以全文的形式。你可以点此下载中文版。
四,Friends RSS Aggregator (FRA)
Friends RSS Aggregator (FRA) 这个插件可以通过RSS聚合,也只是现实文章的标题,发布日期等。
五,inlineRSS
Inlinefeed 支持RSS, RDF, XML or HTML等几种格式,通过Inlinefeed可以让Rss源的文章现实在特定文章内。
六,GetRSS
激活GetRSS插件后,可以使用如下的代码聚合 rss 的文章。

发表在 网站建设 | 标签为 , | 留下评论

最新体验版本V1.0.3.20130924

最新体验版本V1.0.3.20130924

增加了功能:文字刷

增加了功能:属性转文字

增加了功能:坐标标注

增加了功能:多段线标注

在功能插入二维码插入条形码后将所有的实体构成一个组,形成整体

发表在 CAD好帮手发布 | 标签为 , | 留下评论

多段线标注

1:点击菜单”标注”->”多段线标注”

2:选中多段线

3:依次选中标注位置

4:系统自动生成多段线各个点的坐标标注,如果有圆弧会生成圆弧标注

多段线标注

本功能需要注册后才可以使用

软件注册

发表在 CAD好帮手教程 | 标签为 , | 留下评论

坐标标注

1:点击菜单”标注”->”坐标标注”

2:”>>指定点坐标”,选中需要标注的点

3:”>>请指定下一个点或输入字高”,这一步中可以选中下一个点或者输入 1 2 3 4 5 6 7 8 9,做为标注的文字的字高,输入字高后,需继续输入下一个点

4:系统生成坐标标注

坐标标注

发表在 CAD好帮手教程 | 标签为 , | 留下评论

属性转文字

1:点击菜单”文字”->”属性转文字”

2:选中一个或多个带有属性的块

3:确定后,系统自动将块中的属性转换成文字

发表在 CAD好帮手教程 | 标签为 , | 留下评论

文字刷

1:点击菜单”文字”->”文字刷”

2:选择样本文字,从样本文字中获取样式,应用到后面选中的匹配文字中

3:弹出选项对话框,刷新哪些属性

文字刷

目前可以刷新的属性有:内容,颜色,文字高度,角度,对齐方式,图层,字体

支持文字和多行文字之间任意匹配

4:选择需要匹配的文字,可以多次选择多个

5:按ESC结束

发表在 CAD好帮手教程 | 标签为 , | 留下评论

delete AcDbDatabase 崩溃

今天调试软件的时候,发现关闭CAD的时候系统中是崩溃

而且完全同样的代码在AutoCAD2008中运行完全正常,但是在

AutoCAD2006运行每次在delete AcDbDatabase

逐步调试

第一步:检查从AcDbDatabase中打开的任何实体对象。

因为任何未关闭的对象,均会导致结束的时候崩溃

因为代码较多,所以检查了一上午,未发现任何打开的实体未关闭。

第二步:注释代码readDwgFile

“正常”运行,关闭不崩溃

确定是AcDbDatabase在readDwgFile导致的问题

也验证了在AutoCAD2008运行正常,如果是第一步的问题正常情况下在AutoCAD2008下也会崩溃

第三步:将读取的文件替换成一个完全新建的文件,没有任何实体对象,打开readDwgFile代码,运行正常,确定是打开的文件问题

第四步:从原有报错文件中将所有有效对象拷贝到新文件中。打开所有注释的代码。

运行,BUG完美解决。

发表在 ObjectArx | 标签为 , , | 留下评论

读写DWG

转载至:http://hi.baidu.com/kcpnevergiveup/item/60d43edea9522f10e1f46f4e

void createDwg()
{
AcDbDatabase *pDb = new AcDbDatabase();

AcDbBlockTable *pBtbl;
pDb->getSymbolTable(pBtbl, AcDb::kForRead);

AcDbBlockTableRecord *pBtblRcd;
pBtbl->getAt(ACDB_MODEL_SPACE, pBtblRcd,
AcDb::kForWrite);
pBtbl->close();

AcDbCircle *pCir1 = new AcDbCircle(AcGePoint3d(1,1,1),
AcGeVector3d(0,0,1),
1.0),
*pCir2 = new AcDbCircle(AcGePoint3d(4,4,4),
AcGeVector3d(0,0,1),
2.0);

pBtblRcd->appendAcDbEntity(pCir1);
pCir1->close();

pBtblRcd->appendAcDbEntity(pCir2);
pCir2->close();
pBtblRcd->close();

// AcDbDatabase::saveAs() does NOT automatically
// append a DWG file extension, so it
// must be specified.
//
pDb->saveAs(_T(“I:\\test1.dwg”));
delete pDb;

}
void readDwg()
{
// Set constructor parameter to kFalse so that the
// database will be constructed empty. This way only
// what is read in will be in the database.
//
AcDbDatabase *pDb = new AcDbDatabase(Adesk::kFalse);

// The AcDbDatabase::readDwgFile() function
// automatically appends a DWG extension if it is not
// specified in the filename parameter.
//
pDb->readDwgFile(_T(“test1.dwg”));

// Open the model space block table record.
//
AcDbBlockTable *pBlkTbl;
pDb->getSymbolTable(pBlkTbl, AcDb::kForRead);

AcDbBlockTableRecord *pBlkTblRcd;
pBlkTbl->getAt(ACDB_MODEL_SPACE, pBlkTblRcd,
AcDb::kForRead);
pBlkTbl->close();

AcDbBlockTableRecordIterator *pBlkTblRcdItr;
pBlkTblRcd->newIterator(pBlkTblRcdItr);

AcDbEntity *pEnt;
for (pBlkTblRcdItr->start(); !pBlkTblRcdItr->done();
pBlkTblRcdItr->step())
{
pBlkTblRcdItr->getEntity(pEnt,
AcDb::kForRead);
acutPrintf(_T(“classname: %s\n”),
(pEnt->isA())->name());
pEnt->close();
}
pBlkTblRcd->close();
delete pBlkTblRcdItr;
delete pDb;
}

发表在 ObjectArx | 标签为 , | 留下评论

WordPress添加文章路径导航

在各种门户网站或者论坛都能看到下面这种结构的导航条,在国外通常被称为 Breadcrumb trail 或者 Breadcrumb navigation,直译过来就是文章路径导航或者面包屑导航。访客可以方便地访问同类的文章, 并直观地明确文章的所属,也能方便搜索引擎理解网站结构。

首页 > 分类或模块 > 二级分类或模块 > … > N级分类或模块 > 文章

第一步 在主题的模板函数 functions.php 中添加以下代码:

/*
| ——————————————————————-
| Breadcrumbs
| ——————————————————————-
|
| */
function moesora_breadcrumbs() {

 $delimiter = ‘<span>&raquo;</span>’;
 $before = ‘<li>’; // tag before the current crumb
 $after = ‘</li>’; // tag after the current crumb

 if ( !is_home() && !is_front_page() || is_paged() ) {

   echo ‘<ul>’;

   global $post;
   $homeLink = home_url();
   echo ‘<a href=”‘ . $homeLink . ‘”>博客首页</a></li> ‘ . $delimiter . ‘ <a href=”http://www.cadgj.com/archivers/” title=”浏览全部的文章分类”>全部分类</a>’ . $delimiter . ”;

   if ( is_category() ) {
     global $wp_query;
     $cat_obj = $wp_query->get_queried_object();
     $thisCat = $cat_obj->term_id;
     $thisCat = get_category($thisCat);
     $parentCat = get_category($thisCat->parent);
     if ($thisCat->parent != 0) echo(get_category_parents($parentCat, TRUE, ‘ ‘ . $delimiter . ‘ ‘));
     echo $before . ‘分类为【’ . single_cat_title(”, false) . ‘】的全部文章’ . $after;

   } elseif ( is_day() ) {
     echo ‘<li><a href=”http://www.cadgj.com/archive/” title=”日志存档”>日志存档</a></li> ‘ . $delimiter . ‘ ‘;
     echo ‘<li><a href=”‘ . get_year_link(get_the_time(‘Y’)) . ‘”>’ . get_the_time(‘Y’) . ‘年</a></li> ‘ . $delimiter . ‘ ‘;
     echo ‘<li><a href=”‘ . get_month_link(get_the_time(‘Y’),get_the_time(‘m’)) . ‘”>’ . get_the_time(‘m’) . ‘月</a></li> ‘ . $delimiter . ‘ ‘;
     echo $before . get_the_time(‘d’) . ‘日’ .$after;

   } elseif ( is_month() ) {
     echo ‘<li><a href=”http://www.cadgj.com/archivers/” title=”日志存档”>日志存档</a></li>’ . $delimiter . ‘ ‘;
     echo ‘<li><a href=”‘ . get_year_link(get_the_time(‘Y’)) . ‘”>’ . get_the_time(‘Y’) . ‘年</a></li> ‘ . $delimiter . ‘ ‘;
     echo $before . get_the_time(‘m’) . ‘月’ .$after;

   } elseif ( is_year() ) {
     echo $before .'<li><a href=”http://www.cadgj.com/archivers/” title=”日志存档”>日志存档</a></li>’ . $delimiter , get_the_time(‘Y’) . ‘年’ .$after;

   } elseif ( is_single() && !is_attachment() ) {
     if ( get_post_type() != ‘post’ ) {
       $post_type = get_post_type_object(get_post_type());
       $slug = $post_type->rewrite;
       echo ‘<li><a href=”‘ . $homeLink . ‘/’ . $slug[‘slug’] . ‘/”>’ . $post_type->labels->singular_name . ‘</a></li> ‘ . $delimiter . ‘ ‘;
       echo $before . get_the_title() . $after;
     } else {
       $cat = get_the_category(); $cat = $cat[0];
       echo get_category_parents($cat, TRUE, ‘ ‘ . $delimiter . ‘ ‘);
       echo $before . get_the_title() . $after;
     }

   } elseif ( !is_single() && !is_page() && get_post_type() != ‘post’ && !is_404() ) {
     $post_type = get_post_type_object(get_post_type());
     echo $before . $post_type->labels->singular_name . $after;

   } elseif ( is_attachment() ) {
     $parent = get_post($post->post_parent);
     $cat = get_the_category($parent->ID); $cat = $cat[0];
     echo get_category_parents($cat, TRUE, ‘ ‘ . $delimiter . ‘ ‘);
     echo ‘<li><a href=”‘ . get_permalink($parent) . ‘”>’ . $parent->post_title . ‘</a></li> ‘ . $delimiter . ‘ ‘;
     echo $before . get_the_title() . $after;

   } elseif ( is_page() && !$post->post_parent ) {
     echo $before . get_the_title() . $after;

   } elseif ( is_page() && $post->post_parent ) {
     $parent_id  = $post->post_parent;
     $breadcrumbs = array();
     while ($parent_id) {
       $page = get_page($parent_id);
       $breadcrumbs[] = ‘<li><a href=”‘ . get_permalink($page->ID) . ‘”>’ . get_the_title($page->ID) . ‘</a></li>’;
       $parent_id  = $page->post_parent;
     }
     $breadcrumbs = array_reverse($breadcrumbs);
     foreach ($breadcrumbs as $crumb) echo $crumb . ‘ ‘ . $delimiter . ‘ ‘;
     echo $before . get_the_title() . $after;

   } elseif ( is_search() ) {
     echo $before . ‘搜索结果: 内容包含【’ . get_search_query() . ‘】的全部文章’ . $after;

   } elseif ( is_tag() ) {
     echo $before . ‘标签为【’ . single_tag_title(”, false) . ‘】的全部文章’ . $after;

   } elseif ( is_author() ) {
      global $author;
     $userdata = get_userdata($author);
     echo $before . ‘作者为【’ . $userdata->display_name.’】的全部文章’ . $after;

   } elseif ( is_404() ) {
     echo $before . ‘错误404’ . $after;
   }

   if ( get_query_var(‘paged’) ) {
     if ( is_category() || is_day() || is_month() || is_year() || is_search() || is_tag() || is_author() ) echo ‘ (‘;
     echo ‘第’ . get_query_var(‘paged’). ‘页’;
     if ( is_category() || is_day() || is_month() || is_year() || is_search() || is_tag() || is_author() ) echo ‘)’;
   }

   echo ‘</ul>’;

 }
} // end moesora_breadcrumbs()

 

第二步 然后在需要的地方使用以下代码调用即可:

<?php if (function_exists(‘moesora_breadcrumbs’)) moesora_breadcrumbs(); ?>

具体效果可以直接参见本文文章标题上方。

发表在 网站建设 | 标签为 , , | 留下评论

最新体验版本V1.0.3.20130922

发布最新版本

V1.0.3.20130922

增加新功能:图纸防修改

增加新功能:插入二维码

增加新功能:插入条形码

修复了BUG:文字重叠检测,交叉重叠检测不到

发表在 CAD好帮手发布 | 标签为 , | 留下评论

插入条形码

1:点击菜单按钮”图档工具”->”插入条形码”

2:弹出输入对话框

输入条形码

单独的条形码:仅显示条形码

条形码+文字:上部显示条形码,下部显示文字内容

3:输入插入点

4:拖动预览效果

插入条形码

5:得到效果

插入条形码

发表在 CAD好帮手教程 | 标签为 , | 留下评论

创建分组

//创建分组
//groupId,分组ID
//ids,实体ID数组
Acad::ErrorStatus makeGroup(AcDbObjectId groupId,AcDbObjectIdArray& ids)
{
 Acad::ErrorStatus es=Acad::eOk;
 AcDbGroup *pGroup;
 es=acdbOpenObject(pGroup, groupId, AcDb::kForWrite);
 if(es!=Acad::eOk)
 {
  return es;
 }
 long i, length;
 length=ids.logicalLength();
 ads_name ename;
 pGroup->append(ids);
 pGroup->close();
 return Acad::eOk;
}
//不存在的分组名称
//pDb:数据库
//strName:分组名称
Acad::ErrorStatus notExistGroupName(AcDbDatabase* pDb,
         CString& strName)
{
 Acad::ErrorStatus es=Acad::eOk;
 AcDbDictionary *pGroupDict;
 es=pDb->getGroupDictionary(pGroupDict, AcDb::kForRead);
 if(es!=Acad::eOk)
 {
  return es;
 }
 int nCount=0;
 CString strTmp=strName;
 while(pGroupDict->has(strName))
 {
  nCount++;
  strName.Format(_T(“%s%d”),strTmp,nCount);
 }
 pGroupDict->close();
 return Acad::eOk;

}
//创建分组
//pDb:数据库
//strName:分组名称
//bRenameIfExist:如果已经存在是否需要重新命名
//ids,实体ID数组
Acad::ErrorStatus makeGroup(AcDbDatabase* pDb,
       CString& strName,
       bool bRenameIfExist,
       AcDbObjectIdArray& ids)
{
 Acad::ErrorStatus es=Acad::eOk;
 if(bRenameIfExist)
 {
  es=notExistGroupName(pDb,strName);
  if(es!=Acad::eOk)
  {
   return es;
  }
 }
 AcDbGroup *pGroup = new AcDbGroup(strName);

 AcDbDictionary *pGroupDict;
 es=pDb->getGroupDictionary(pGroupDict, AcDb::kForWrite);
 if(es!=Acad::eOk)
 {
  return es;
 }

 AcDbObjectId groupId;
 pGroupDict->setAt(strName, pGroup, groupId);
 pGroupDict->close();
 pGroup->close();

 es=makeGroup(groupId,ids);
 return es;
}

发表在 ObjectArx | 标签为 , | 留下评论

图纸防修改

1:点击菜单按钮”图档工具”->”图纸防修改”

2:选择需要防止修改的实体

3:软件自动将所有的选择的实体定义为一个多重插入块

不足之处:

通过一些专业的软件开发人员制作的专用插件,有可能获取到获取到图纸的原有内容

如果需要进行安全性要求较高的图纸外发,请使用专用软件

 

发表在 CAD好帮手教程 | 标签为 , | 留下评论

CAD中插入二维码

本功能需要注册后才可以使用,发布日期:20130921

软件注册

1:点击菜单”图档工具”->”二维码”

2:在弹出的对话框中输入需要用二维码表示的内容

CAD插入二维码

3:输入插入点

4:拖动范围,确定另一个插入点

CAD插入二维码

5:确定后插入二维码

有兴趣的朋友可以扫一扫,内容为

CAD工具之家(www.cadgj.com)

CAD插入二维码

经过升级的最新版本

最多可以支持大约两百个汉字,并且支持LOGO

可以扫描出下面的文字内容:

CAD好帮手是一款优秀的免费CAD插件
(不排除将来针对少量高级功能进行少量收费的可能性)
可以极大的提高您设计图纸的速度
支持32位版本的AutoCAD2004~AutoCAd2014
以及64位版本的AutoCAD2010~AutoCAd2014
作者:boitboy QQ:245804736 邮箱:wdzhangsl@126.com
官网CAD工具之家(www.cadgj.com)

制作自己的LOGO?

将自己的LOGO DWG文件放在CAD好帮手的安装目录下面的”UserConfig”目录下面,将DWG命名为”二维码LOGO.dwg”就可以了,整个图纸中只存放一个LOGO,不可以有其它对象,长度和宽度建议控制在40*40或以下,否则可能导致二维码无法识别,二维码总大小为172*172,有7%的容错率,要求长*宽<2070,考虑到实际情况,控制在40*40以下比较妥当。

32位操作系统,默认安装LOGO文件路径为:C:\Program Files\CAD好帮手\UserConfig\二维码LOGO.dwg

64位操作系统,默认安装LOGO文件路径为:C:\Program Files(X86)\CAD好帮手\UserConfig\二维码LOGO.dwg

发表在 CAD好帮手教程 | 标签为 , | 2条评论

C++生成二维码

网上搜索了很久,终于在CSDN上找到了一份可以正确生成二维码的代码。

但是有几个BUG,会造成内存泄露。

已经修改好了,大家可以放心使用。

下载地址:http://pan.baidu.com/share/link?shareid=2525922788&uk=721859502

生成的二维码内容为

CAD工具之家(www.cadgj.com)

大家可以扫一扫试试

二维码

发表在 C++ | 标签为 , | 留下评论

DWG文件批量清理

1:点击菜单”图档工具”->”批量文件清理”

2:弹出参数对话框

批量文件清理

 通过添加文件,添加目录添加您需要清理的文件

 

然后选择保存类型,保持原有类型表示的意思是原有的文件保存的是什么版本继续保存成什么版本。

3:按”开始清理”开始清理

软件开始清理,并输出清理结果,通常可以将文件压缩一半左右。

需要看具体的清理日志可以点”查看日志”按钮。

发表在 CAD好帮手教程 | 标签为 , | 留下评论