真彩色滤光片
我想选择几个相同的ACI颜色实体,然后显示夹点在绘图上…
一些图元颜色=255194,10(真彩色)
一些实体颜色=40(ACI颜色)
所有这些图元都是相同的ACI颜色40(但我想过滤真彩色图元)
我尝试以下代码..因为它似乎是DXF组过滤器不支持真彩色 ;Dim objSelSet As AcadSelectionSet ;出错时继续下一步 ;此绘图。选择集(“sset”)。删除 ;出错时转到错误处 
 ;设置objSelSet=ThisDrawing.SelectionSets。添加(“sset”)
 ;Dim intGcode(0)作为整数 ;Dim varCodeData(0)作为变量 ;intGcode(0)=62 ;varCodeData(0)=“0”;40“
 ;对象集。选择acSelectionSetAll、intGcode、varCodeData 
 ;Dim lngMax(长) ;长时变暗 ;Dim objRemove(0)作为AcadEntity ;lngMax=对象集。计数 ;对于lngCnt=0到lngMax-1   ;Set objRemove(0)=objSelSet。项目(lngCnt)   ;如果objRemove(0)。TrueColor。ColorMethod=acColorMethodByRGB,然后     ;对象集。RemoveItems objRemove   ;如果结束 ;下一步 ;对象集。删除 ;此图纸。SendCommand“;(sssetfirst nil(ssget&Chr(34)&&引用_P“&;Chr(34)&";))&引用
 ;退出Sub 
错误: ;如果出现错误,则   ;犯错误清除   ;MsgBox错误。说明 ;结束If结束Sub&039----------------------------
但是,它不起作用,我正在努力http://discussion.autodesk.com/thread.jspa?messageID=415583如果使用VLAX而不是上面的SendCommand,也会失败
有什么办法吗?或者有什么想法?
255、194、10=我20个 Bryco,这是我的例子。画相似的颜色或不同的颜色实体并测试它
我的目标是最后的选择集->;选择实体并设置夹点 你想做的只是在vba中不好,net会很好。 Chobo,
您的代码在迭代选择集时从选择集中删除对象……这是不允许的。此外,在报告错误之前,您清除了错误处理程序中的错误,因此错误MsgBox中没有显示任何内容
我认为下面的代码实现了您的期望。我不知道';t喜欢使用SendCommand,但不去VL类,它';这是我现在唯一能想到的办法
Option Explicit
Sub ColorFilter()
Dim objSelSet As AcadSelectionSet
On Error Resume Next
ThisDrawing.SelectionSets("sset").Delete
On Error GoTo ErrHere
Set objSelSet = ThisDrawing.SelectionSets.Add("sset")
Dim intGcode(0) As Integer
Dim varCodeData(0) As Variant
intGcode(0) = 62
varCodeData(0) = "40"
objSelSet.Select acSelectionSetAll, , , intGcode, varCodeData
Dim lngMax As Long
Dim lngCnt As Long
Dim objRemove() As AcadEntity
Dim objEnt As AcadEntity
Dim I As Integer
lngMax = objSelSet.Count
For lngCnt = 0 To lngMax - 1
Set objEnt = objSelSet.Item(lngCnt)
If objEnt.TrueColor.ColorMethod = acColorMethodByRGB Then
ReDim Preserve objRemove(I)
Set objRemove(I) = objEnt
I = 1 + I
End If
Next
objSelSet.RemoveItems objRemove
If objSelSet.Count > 0 Then
ThisDrawing.SendCommand "(setq ss (ssadd)) "
For Each objEnt In objSelSet
ThisDrawing.SendCommand "(ssadd (handent " & Chr(34) & objEnt.Handle & _
Chr(34) & ") ss) "
Next
End If
ThisDrawing.SendCommand "(sssetfirst nil ss) "
objSelSet.Delete
Exit Sub
ErrHere:
If Err Then
MsgBox Err.Description
Err.Clear
End If
End Sub
我不知道';t完全达到目标
一些实体颜色=255194,10(真彩色)
一些图元颜色=40(ACI颜色)
如果你使用40,那么你赢了';t获得255194,10;因为现在是20。所以我想你一定要把每件商品都涂上真的颜色
如果是这种情况,则不需要选择集过滤器
I';我希望杰夫能得到你想要的。 Bryco,用chobo显示的颜色创建4个圆,然后在每个圆上使用(entget(car(entsel)))。DXF 62代码显示除指定的30之外的所有40,因此过滤的SS(在DXF 62=40时)得到4个中的3个。他们只想要一个具体为ACI颜色40的SS。 对不起,我解释得不好。我的目标是只选择ACI颜色实体。选择实体使用组码;62“;(任何ACI颜色以及40)从选择集中减去真彩色实体,因为组码;62“;不支持真彩色。
3.选择设置夹点,非常感谢Jeff\u M,Bryco!! 55、194、10=20,我可以#039;不要让这种情况再次发生
我在喝什么,我是说在想什么。
页:
[1]