乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 118|回复: 7

无法准确地获得投影点并将其发送到Autocad的命令

[复制链接]

5

主题

25

帖子

1

银币

初来乍到

Rank: 1

铜币
45
发表于 2022-1-15 02:36:05 | 显示全部楼层 |阅读模式
大家早上好,我是个新手,我有个问题。我试图通过找到投影点并按该点移动实体,为X/Y方向创建一个简单的对齐命令。源代码如下。请查看
无效
cmdAXY()
{
ads_name ss
TCHAR千瓦[10]
int-rc
rc=acedsget(NULL、NULL、NULL和ss)
如果(rc!=RTNORM)返回
acedInitGet(1,_T(“X,Y”)
acedGetKword(_T(“\n符号方向:
”),千瓦)
//Khai báo,&#273ịnh-ngh;g;c 0 UCS
点pt0、pt1、pt2、pt1T
pt0[0]=0
pt0[1]=0
pt0[2]=0
/&#272ịnh-ngh;pt1
acedInitGet(1,NULL)
rc=acedGetPoint(pt0,_T(“\n选择第一个点:”),pt1)
如果(rc!=RTNORM)返回
/&#272ịnh-ngh;a pt2:
acedInitGet(1,NULL)
rc=acedGetPoint(pt1,_T(“\n选择第二个点:”),pt2)
如果(rc!=RTNORM)返回
struct resbuf*cmdlist
如果(_tcscmp(Kw,_T(“X”)==0)
{
pt1T[0]=pt1[0]
pt1T[1]=pt2[1]
pt1T[2]=pt1[2]
}
其他
{
pt1T[0]=pt2[0]
pt1T[1]=pt1[1]
pt1T[2]=pt1[2]
}
cmdlist=acutBuildList(RTSTR,_T(“.move”)、RTSTR、_T(“P”)、RTSTR、_ T(“)和RTPOINT
,pt1,RTPOINT,pt1T,0)
<div>acedCmdS(cmdlist)
<div>acutRelRb(cmdlist)
acedSSFree(ss)
}


skflqqdteni.PNG

skflqqdteni.PNG

本帖以下内容被隐藏保护;需要你回复后,才能看到!

游客,如果您要查看本帖隐藏内容请回复
回复

使用道具 举报

5

主题

25

帖子

1

银币

初来乍到

Rank: 1

铜币
45
发表于 2022-1-15 19:11:23 | 显示全部楼层
RT3DPOINT而不是RTPOINT?
回复

使用道具 举报

5

主题

25

帖子

1

银币

初来乍到

Rank: 1

铜币
45
发表于 2022-1-16 02:26:19 | 显示全部楼层
谢谢你的回复。我也试过了,但不起作用。
回复

使用道具 举报

5

主题

25

帖子

1

银币

初来乍到

Rank: 1

铜币
45
发表于 2022-1-16 03:46:09 | 显示全部楼层
可能尝试不使用move命令<br>静态无效ArxBrxTest_doit()</div>
{
ads_name ss{0L,0L}
TCHAR-Kw[10]={0}
int-rc
rc=acedsget(NULL、NULL、NULL和ss)
如果(rc!=RTNORM)返回
acedInitGet(1,_T(“X,Y”)
acedGetKword(_T(“\n符号方向:
”),千瓦)
<div>AcGePoint3d pt1、pt2、pt1T
acedInitGet(1,NULL)
rc=acedGetPoint(NULL,_T(“\n选择第一个点:”),asDblArray(pt1))
如果(rc!=RTNORM)返回
acedInitGet(1,NULL)
rc=acedGetPoint(asDblArray(pt1),_T(“\n选择第二个点:”),asdblaray(pt2))
如果(rc!=RTNORM)返回
AcGePlane
如果(_tcscmp(Kw,_T(“X”)==0)
平面。集合(pt1,AcGeVector3d::kYAxis)
其他
平面。集合(pt1,AcGeVector3d::kXAxis)
pt1T=平面接近点(pt2)
<div>AcGeMatrix3d xform=ACGEMATTRIX3D::translation(pt2-pt1T)
ACDBObjectiveDarray ID
<div>acedGetCurrentSelectionSet(ids)
用于(自动id:ids)
{
if(AcDbEntityPointer-pEnt(id,AcDb::kForWrite);被压抑的。openStatus()==eOk)
pEnt->transformBy(xform)
}
acedSSFree(ss)
}

回复

使用道具 举报

5

主题

25

帖子

1

银币

初来乍到

Rank: 1

铜币
45
发表于 2022-1-16 03:51:21 | 显示全部楼层
尽管您可能需要转换到UCS
回复

使用道具 举报

5

主题

25

帖子

1

银币

初来乍到

Rank: 1

铜币
45
发表于 2022-1-16 09:40:25 | 显示全部楼层
谢谢你的回复。终于,成功了。
我对您的代码有一些疑问
“ads _ name ss { 0L,0L };
TCHAR Kw[10]= { 0 };"-> {0L,0L}和{0}是什么?我们为什么要使用它?
我猜这与“字符串不能以零结尾”警告有关,但我不确定。
预先感谢。
回复

使用道具 举报

5

主题

25

帖子

1

银币

初来乍到

Rank: 1

铜币
45
发表于 2022-1-16 17:10:00 | 显示全部楼层
很高兴它能工作:)
我只是试着养成初始化变量的习惯,有时我忘记了,我错过了rc
未初始化的变量会使程序变得不确定性。每次程序运行时,其行为可能会有所不同
在这种情况下,可能不是问题
回复

使用道具 举报

5

主题

25

帖子

1

银币

初来乍到

Rank: 1

铜币
45
发表于 2022-1-22 07:32:01 | 显示全部楼层
非常感谢。我明白了。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2024-11-22 01:56 , Processed in 0.149701 second(s), 71 queries .

© 2020-2024 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表