可以通过调用函数和将图元添加到选择集或从选择集中移除图元,当 AutoCAD 以交互方式提示用户选择对象或移除对象时,函数和类似于“添加”和“移除”选项。acedSSAdd()acedSSDel() 注意:该函数还可用于创建新的选择集,如以下示例所示。与 一样,仅当它返回时才创建新的选择集。acedSSAdd()acedSSGet()acedSSAdd()RTNORM
下面的示例代码片段创建一个选择集,其中包含当前图形中的第一个和最后一个图元。 ads_name fname, lname; // Entity names ads_name ourset; // Selection set name // Get the first entity in the drawing. if (acdbEntNext(NULL, fname) != RTNORM) { acdbFail("No entities in drawing\n"); return BAD; } // Create a selection set that contains the first entity. if (acedSSAdd(fname, NULL, ourset) != RTNORM) { acdbFail("Unable to create selection set\n"); return BAD; } // Get the last entity in the drawing. if (acdbEntLast(lname) != RTNORM) { acdbFail("No entities in drawing\n"); return BAD; } // Add the last entity to the same selection set. if (acedSSAdd(lname, ourset, ourset) != RTNORM) { acdbFail("Unable to add entity to selection set\n"); return BAD; } 即使数据库中只有一个实体,该示例也能正常运行(在这种情况下,两者将其参数设置为相同的实体名称)。Ifis 传递了已在选择集中的实体的名称,它会忽略请求并且不报告错误。acdbEntNext()acdbEntLast()acedSSAdd() 如示例所示,第二个和第三个参数可以作为相同的选择集名称传递。也就是说,如果调用成功,则由两个参数命名的选择集将包含附加成员 afterreturn(除非指定的实体已在选择集中)。acedSSAdd()acedSSAdd() 以下调用将删除在上一示例中用于创建选择集的实体。 acedSSDel(fname, ourset); 如果图形中有多个图元(即,ifandare 不相等),则选择集现在仅包含图形中的最后一个图元。fnamelnameoursetlname 该函数返回选择集中的图元数,并测试特定图元是否为选择集的成员。最后,该函数返回选择集中特定实体的名称,使用索引进入该集(选择集中的实体从 0 开始编号)。acedSSLength()acedSSMemb()acedSSName() 注意:由于选择集可能非常大,因此返回的参数必须声明为整数。在调用中用作索引的参数也必须是整数。(在此上下文中,标准 C 编译器将正确转换纯整数。lenacedSSLength()longiacedSSName()long
以下示例代码显示了对 的几个调用。acedSSName() ads_name sset, ent1, ent4, lastent; long ilast; // Create the selection set (by prompting the user). acedSSGet(NULL, NULL, NULL, NULL, sset); // Get the name of first entity in sset. if (acedSSName(sset, 0L, ent1) != RTNORM) return BAD; // Get the name of the fourth entity in sset. if (acedSSName(sset, 3L, ent4) != RTNORM) { acdbFail("Need to select at least four entities\n"); return BAD; } // Find the index of the last entity in sset. if (acedSSLength(sset, &ilast) != RTNORM) return BAD; // Get the name of the last entity in sset. if (acedSSName(sset, ilast-1, lastent) != RTNORM) return BAD; |
|Archiver|CAD开发者社区 ( 苏ICP备2022047690号-1 苏公网安备32011402011833)
GMT+8, 2025-1-8 19:38
Powered by Discuz! X3.4
Copyright © 2001-2021, Tencent Cloud.