PLM之家精品课程培训

PLM之家精品课程培训

联系电话:18301858168   |   QQ咨询:939801026
NX二次开发培训

NX二次开发培训

UFUN/NXOpen C++和实战案例

适合初级入门或想深入了解二次开发的工程师,本培训结合ufun,NXOpen C++,大量的实例及官方内部的开发技术。
公众号二维码

关注公众号

点击扫描二维码免费在线高清教程

课程详情
Catia二次开发培训

Catia二次开发培训

市场需求大,掌握核心技术前景广阔

Catia二次开发的市场需求大,人才稀缺。掌握开发技能潜力巨大,随着经验积累将在汽车、航空等领域有所作为。
B站二维码

在线原创B站视频

点击关注工业软件传道士主页

课程详情
Teamcenter培训

Teamcenter培训

全方位培训,从基础应用到高级开发全覆盖

涵盖用户应用基础培训、管理员基础培训、管理员高级培训及二次开发培训等全方位内容,由多年经验讲师打造。
QQ群二维码

加入同行交流

点击扫描二维码加入QQ群

课程详情
×

PLM之家plmhome公众号

课程涵盖: PLM之家所有原创视频

×

关注B站视频

所有高清视频一览无余,全部在线播放学习

×

加入PLM之家QQ群

同行交流,疑问解答,更多互助

PLM之家PLMHome-国产软件践行者

[已解决] 二次开发NXOpenC++中NXOpen::Features::TextBuilder对象如何实现预览功

  [复制链接]

2016-1-15 13:59:38 8616 5

浮游 发表于 2015-8-25 11:30:57 |阅读模式

浮游 楼主

2015-8-25 11:30:57

请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!

您需要 登录 才可以下载或查看,没有账号?注册

x
我是新人 想用TextBuilder辅助实现刻字功能,附上我自己克隆journal 的字体处理代码,还在修改中:
4 A* q  U5 e$ v9 F0 V1 ~; K3 E* K- c
2 s2 y7 A9 c2 a- T/ f( N. Tvoid Letter::textProcess(const char * fonTContent, char* fontType, double& wScale,bool bools)
0 ~8 M4 I; q, u3 r% T{
) |2 R9 U6 v! S# g if (m_pTextBuilder == NULL)
$ w- R. N7 n/ q% b/ g. @  m_pTextBuilder = m_pTextBuilder = workPart->Features()->CreateTextBuilder(m_pNullNXOpen_Features_Texts);1 t# i9 `) {- M- G; [3 U
int i = 0;
& p1 D( d- T0 ?, f" E7 n
, ~1 r- ^# n8 }# ` m_pTextBuilder->SetFontStyle(NXOpen::Features::TextBuilder::FontStyleOptions::FontStyleOptionsRegular);5 f& D, W0 k; w3 g. A
m_pTextBuilder->SetOrientationMethod(NXOpen::Features::TextBuilder::OrientationMethodOptions::OrientationMethodOptionsNatural);) W3 o; M% |: @2 G4 }" R
NXOpen::Features::TextBuilder::ScriptOptions characterSet;
+ L$ I! r+ \0 i7 } if (fontType[1] >= 'A'&&fontType[1] <= 'z')
4 c+ @+ I, ?. A  characterSet = NXOpen::Features::TextBuilder::ScriptOptions::ScriptOptionsWestern;, |+ z+ [- s* N, J
else  U; x- r. A' ]& _0 y$ w  _0 |( X
  characterSet = NXOpen::Features::TextBuilder::ScriptOptions::ScriptOptionsGb2312;: l/ T# J& Q' l* T# B) h# n. Y
i = 0;
) D5 K, L, m( Y8 h while (1)
" K' E' @+ S7 f- _ {
& W+ r! W7 R. H4 L- t* Q, H  if (fontContent == 0) break;
" L7 Q9 X$ B4 ?$ [  if (fontContent & 0x80)0 s! U! q6 `# y- }) e0 F
   if (fontContent[i + 1] & 0x80)2 r. h( A  }% @! o) b( x9 r: a
    if (characterSet != NXOpen::Features::TextBuilder::ScriptOptions::ScriptOptionsGb2312)4 ~% R! h. A5 e# ?, d+ g  t- C
    {: m' v0 w0 C5 `
     uc1601("含有汉字,选择的字符集可能不支持汉字而导致系统提示出错!!!", 1);
2 j/ B2 B- h9 }: u- p- w, A& \4 n) j     break;  J9 U; _1 X0 R8 P. r$ A2 j
    }
2 @1 F" `/ N. y0 ~; m' ?  i++;
$ m9 l5 \8 s6 @  ?0 S# M! C }
7 L1 h7 ?2 |" V+ W m_pTextBuilder->SetTextString(fontContent);8 N, X: u; [1 w! r) @9 q1 \) h( u
m_pTextBuilder->SelectFont(fontType, characterSet);3 `9 k3 o( ]; S' ]) k
m_pTextBuilder->SetCanUseKerningSpaces(true);7 B% N+ R+ K  s7 g
m_pTextBuilder->SetCanReverseIntersectionCurve(true);/ V5 b/ ]5 e2 y8 ?2 O

- L  o$ U& D" o3 L& R  s NXOpen:irection * orientationVector = workPart->Directions()->CreateDirection(Point3d(m_pnPoint[0], m_pnPoint[1], m_pnPoint[2]),7 G: R' s5 a4 B2 {1 O
  Vector3d((m_pnPoint[0] - m_pnPoint[6]), (m_pnPoint[1] - m_pnPoint[7]), (m_pnPoint[2] - m_pnPoint[8])),' d. J3 C$ O+ p* p5 T- I
  SmartObject::UpdateOption::UpdateOptionWithinModeling);
' h) O" f/ M5 P" | m_pTextBuilder->SetOrientationVector(orientationVector);
" q- L, J- M: b8 d
3 e$ M+ R( x' |' j9 P* @ m_pTextBuilder->SetType(NXOpen::Features::TextBuilder::TypesOnFace);0 N* v5 x- x, c6 C9 G8 z5 u2 Z
m_pTextBuilder->lanarFrame()->SetAnchorLocation(NXOpen::GeometricUtilities::RectangularFrameBuilder::AnchorLocationTypeBottomCenter);
5 b7 x1 Y7 Q: l, I" x0 [8 i
" k9 v' [" D8 ^5 r i = strlen(fontContent);# j0 \' n) k1 O: P
char buf[256] = { 0 };
5 Y$ ^2 A$ }3 b- m6 {1 O# r7 U sprintf(buf, "%f", i * 10 * (wScale / 50.0));6 d2 ?, ]2 `' e& B, Y/ V
m_pTextBuilder->lanarFrame()->Length()->SetRightHandSide(buf);
7 l! j# {7 t1 C! o3 U6 P  B sprintf(buf, "%f", 10 * (wScale / 50.0));. B. K, j/ C  H% e  W/ l+ j
m_pTextBuilder->lanarFrame()->Height()->SetRightHandSide(buf);9 m/ N/ M; m7 J" C3 v! Z
m_pTextBuilder->lanarFrame()->Shear()->SetRightHandSide("0");- s4 ~6 f* A1 u5 Z0 S

+ r% U$ a7 x0 d1 b/ V m_pTextBuilder->FrameOnPath()->AnchorPosition()->SetParameterUsed(false);1 B, f5 O! T  K0 w
m_pTextBuilder->FrameOnPath()->Offset()->SetRightHandSide("0");
& o" o2 P+ P$ U* D. G, v* T m_pTextBuilder->FrameOnPath()->Length()->SetRightHandSide("5.25771270972214");3 R9 Q; X8 R3 U7 b' O. r
m_pTextBuilder->FrameOnPath()->Height()->SetRightHandSide("3.1");
9 M& b/ `' _: V2 a% m! ?  _ m_pTextBuilder->FrameOnPath()->AnchorPosition()->Expression()->SetRightHandSide("50");$ [) e0 z" k& j& ~' d4 z
8 }' m/ ]  F* V+ i0 C
std::vector<NXOpen::Face *> boundaryFaces2(0);
2 U' }/ y8 g2 D/ k7 |( R% ]( A) r" b NXOpen::FaceTangentRule *faceTangentRule2 = workPart->ScRuleFactory()->CreateRuleFaceTangent(m_pface, boundaryFaces2, 0.05);
* J& ]& j' M& N& }! p4 M% T8 R std::vector<NXOpen::SelectionIntentRule *> rules2(1);: @' x  ]2 S. u2 h' u
rules2[0] = faceTangentRule2;- i/ o  w+ V/ U5 `1 F; u
m_pTextBuilder->lacementFaces()->ReplaceRules(rules2, false);
# E/ g9 z/ `& ]: T" D4 j5 V5 x- r) }" p  @
m_pTextBuilder->OnFacePlacementProfile()->SetAllowedEntityTypes(NXOpen::Section::AllowTypesOnlyCurves);( m5 a/ Z9 t: m: w+ K  t
std::vector<NXOpen::Features::Feature *> CurveOnSurfaceFeatures(1);2 G' Z. E* b) z5 }4 r9 t5 O% w
CurveOnSurfaceFeatures[0] = dynamic_cast<NXOpen::Features::CurveOnSurface *>(m_pCurveOnSurfaceObject);
4 Z8 O9 A3 K. v; a& s1 R NXOpen::Spline *spline1 = dynamic_cast<NXOpen::Spline *>(CurveOnSurfaceFeatures[0]->FindObject("CURVE 1"));
+ q. v" r7 O, p' ^9 X NXOpen::Curve *nullNXOpen_Curve(NULL);
6 p! Q  |3 X% ?( L; W! I4 q! m std::vector<NXOpen::SelectionIntentRule *> rules(1);/ h* J6 P* {! J% k
rules[0] = workPart->ScRuleFactory()->CreateRuleCurveFeatureTangent(CurveOnSurfaceFeatures, spline1, nullNXOpen_Curve, false, 0.001, 0.05);
: F- D  g" [: g7 O$ p/ b4 W% { m_pTextBuilder->OnFacePlacementProfile()->AllowSelfIntersection(true);  Z( D6 C1 c$ _& f( J" L6 C
NXOpen::NXObject *nullNXOpen_NXObject(NULL);5 q( M. v9 J! F, M, O
NXOpen:oint3d helpPoint1(m_pnPoint[3], -m_pnPoint[4], m_pnPoint[5]);
6 M5 T. o3 @0 z6 P! i( C  \; t  R m_pTextBuilder->OnFacePlacementProfile()->AddToSection(rules, spline1, nullNXOpen_NXObject, nullNXOpen_NXObject, helpPoint1,' B& u" V. n* g  M% h7 M
  NXOpen::Section::ModeCreate, false);  j' M8 k  x3 y' c! Z5 Z8 l

( l% y) t/ h0 O5 I" r/ _8 A if (bools)# G  X( \. N* p% U* K
{
4 H& c) d) V) h) P  
# L5 R% m) U% [4 q4 o9 E/ \8 s  if (m_pTextBuilder->Validate()); ?# M% N9 L6 z. f/ f7 ^: t
  {
- b9 W6 ?. _5 }3 P4 {+ c   m_pTextObject = m_pTextBuilder->Commit();
, K+ ^: i0 E5 N& C. S   m_pTextBuilder->Destroy();* U( D# M5 q- p# R8 O- X
   m_pTextBuilder = NULL;
! d( |! t7 `9 Q+ E   changeFontType->SetSensitivity(UF_STYLER_NO_SUB_INDEX, false);' k" b  w) s4 X6 A7 ~  ~" r0 ^
   changeStringContent->SetSensitivity(false);
0 x$ J( V; v% F. M! Q   changeRealScale->SetSensitivity(false);* f  ?+ G1 G$ `9 b  M7 J
  }' o, q1 ?! x, J0 f
  
  y. n9 H; K0 K1 U& J1 h3 x8 m }1 n4 p- A/ u- h" C
else
9 ~/ U* U9 t9 Z) ] {  
  [2 S( Q4 M  I: y  | // : ]& Z6 Z& `2 M0 {0 r$ N2 ?# `8 _
  if (m_pTextBuilder->Validate())
" j+ E7 j# J6 @  {
# }3 ^$ [) r& v# L) w/ ^   m_pTextBuilder->Commit();
( }- P6 e& ]4 C) u! |   UF_SO_set_visibility_option(m_pTextBuilder->Tag(), UF_SO_visible);
# q1 c( {9 b; M$ ]0 y$ K0 O5 ^$ M   m_pTextBuilder->Destroy();6 ]+ X6 [; U" E% R+ ?+ D8 C& O5 _' _
   m_pTextBuilder = NULL;9 q8 b9 |% Z( S3 h% P
  }
3 s0 t- D2 X5 i4 Z2 E } 6 E9 F( a/ f. R' g# o( Y8 S7 i

1 u2 L, x) g( |- o. O- p}我想实现一个字体预览效果 ,望有空的前辈指导指点!!!!
2 x0 @8 w5 e: p, q
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ doTeam.tech
回复

使用道具 举报

全部回复5

admin 发表于 2015-8-25 16:23:53

admin 沙发

2015-8-25 16:23:53

预览就是你先commit 生成,然后设置下透明度 而已
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ doTeam.tech
回复 支持 反对

使用道具 举报

浮游 发表于 2015-8-25 17:56:35

浮游 板凳

2015-8-25 17:56:35

这个是不可行的,commit会生成一个实体的,这个不是我们想要的结果.其实我发完帖子不就之后就知道如何解决了.设置 撤销操作即可" ?+ e/ X  R' o( F8 N4 q5 B( a& m
theSession->SetUndoMark();       
$ @+ ^( Y$ P# ]+ q  ttheSession->UndoToMark();
! L; Z' o) {9 v" n* ztheSession->DeleteUndoMark();4 ?+ Q) ]( ]* b5 F1 b; E
这样是没问题的,速度又很快.
$ o5 K3 w) J/ x5 h( x& K但是问题又来了:3 |" C1 W; O' n: d" @3 E
在拉伸的时候出现 err:the tool and target do not form a complete intersection
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ doTeam.tech
回复 支持 反对

使用道具 举报

浮游 发表于 2015-8-25 18:07:59

浮游 地板

2015-8-25 18:07:59

...嘿嘿 我知道如何解决了 ,最后双向拉伸就好了 这是布尔运算造成的...
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ doTeam.tech
回复 支持 反对

使用道具 举报

f1405602 发表于 2016-1-9 16:52:09

f1405602 5#

2016-1-9 16:52:09

浮游 发表于 2015-8-25 18:07- K# O) p2 x' a5 d$ O
...嘿嘿 我知道如何解决了 ,最后双向拉伸就好了 这是布尔运算造成的...
+ [! U: e; ?! U$ }
m_pTextObject 这个nxobject对象如何使用到后面拉伸所用的截面线的呢?需要转化?
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ doTeam.tech
回复 支持 反对

使用道具 举报

heromo 发表于 2016-1-15 13:59:38 PLM之家手机频道

heromo 6#

2016-1-15 13:59:38

浮游 发表于 2015-8-25 17:569 G" U. [' [$ l3 q
这个是不可行的,commit会生成一个实体的,这个不是我们想要的结果.其实我发完帖子不就之后就知道如何解决了. ...
' B, L& z8 T% \
要预览的代码你放在哪里,我放在update中,但是生成的模型无法再撤回了,求指点一下
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ doTeam.tech
回复 支持 反对

使用道具 举报

发表回复

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

返回列表 本版积分规则

  • 发布新帖

  • 在线客服

  • 微信

  • 客户端

  • 返回顶部

  • x
    温馨提示

    本网站(plmhome.com)为PLM之家工业软件学习官网站

    展示的视频材料全部免费,需要高清和特殊技术支持请联系 QQ: 939801026

    PLM之家NX CAM二次开发专题模块培训报名开始啦

    我知道了