找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 160|回复: 0

[每日一码] 模拟命令UCS+V的ARX实现代码

[复制链接]

0

主题

0

回帖

28

积分

管理员

积分
28
发表于 2024-3-14 20:17:48 | 显示全部楼层 |阅读模式
  1. Acad::ErrorStatus UCS采用V()
  2. {
  3.    AcGeMatrix3d matUcs;
  4.    struct resbuf rbZeroPt;
  5.    acedGetVar(采用T("UCSORG"), &rbZeroPt); // origin point for current UCS (in WCS, so, we don't need to convert it)
  6.    struct resbuf viewTwist;
  7.    acedGetVar(采用T("VIEWTWIST"), &viewTwist); // view rotation angle      
  8.    struct resbuf rbViewDir;
  9.    acedGetVar(采用T("VIEWDIR"), &rbViewDir); // Z vector
  10.    AcGeVector3d zAxis = asPnt3d(rbViewDir.resval.rpoint).asVector();
  11.    acdbUcs2Wcs(asDblArray(zAxis),asDblArray(zAxis),true); // to WCS convertation
  12.    zAxis *=  (1.0 / zAxis.length()); // normalization
  13.    matUcs = AcGeMatrix3d::planeToWorld(zAxis) * AcGeMatrix3d::rotation(-viewTwist.resval.rreal, AcGeVector3d::kZAxis, AcGePoint3d::kOrigin); // "by view" matrix. origin is (0,0,0)
  14.    matUcs.setTranslation(asPnt3d(rbZeroPt.resval.rpoint).asVector()); // set the correct origin
  15.    return acedSetCurrentUCS(matUcs);
  16. }
复制代码
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|膜结构网

GMT+8, 2024-12-29 05:12 , Processed in 0.165734 second(s), 22 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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