iCAx开思工具箱

标题: GRIP [打印本页]

作者: xj_05    时间: 2010-6-21 18:03
标题: GRIP
GRIP 求助···
本菜鸟--有2个小问题请教各位:
请教1:我想给组件赋予属性的时候用到了 MCHOOSE 给属性赋值,但是我不知道怎么才能让字符串的值读到ATT的值中去,大家帮我看下是不是我的思路本身就有错误呢。我的程序如下:

DATA/AA,'A1','A2','A5','A4','A5'
DATA/BB,'B1','B2','B5','B4','B5'
DATA/CC,'C1','C2','C5','C4','C5'
DATA/DD,'D1','D2','D5','D4','D5'
DATA/EE,'E1','E2','E5','E4','E5'

P10:
   CHOOSE/'23423423','111','222','333','444','555',RESP
  JUMP/P10:,TRM:,,,T10:,T20:,T30:,T40:,T50:,RESP

T10:
   MCHOOSE/'3453534',AA,AA1,RESP
   JUMP/T10:,TRM:,,RESP
T20:
   MCHOOSE/'3453534',BB,BB1,RESP
   JUMP/T20:,TRM:,,RESP
T30:
   MCHOOSE/'3453534',CC,CC1,RESP
   JUMP/T30:,TRM:,,RESP
T40:
   MCHOOSE/'3453534',DD,DD1,RESP
   JUMP/T40:,TRM:,,RESP
T50:
   MCHOOSE/'3453534',EE,EE1,RESP
   JUMP/T50:,TRM:,,RESP

P20:
  IDENT/'SELECT A ENTIYS',ENT,NUM,CNT,RESP
  JUMP/P20:,TRM:,,RESP

P30:
   ATT(1)='AAA'
   ATT(2)=AA  

   ATT(3)='BBB'
   ATT(4)=BB  

   ATT(5)='CCC'
   ATT(6)=CC

   ATT(7)='DDD'
   ATT(8)=DD

   ATT(9)='EEE'
   ATT(10)=EE

  ASATT=ATT(1..10)

请教2:就是在当前文件导入已有 PART 到当前文件中来,PART 中只有PART LIST 列表。请问怎么让 PART LIST 也导入当前文件中呢,我试了下只能导入实体却不能导入表格。
作者: hello_icax    时间: 2010-6-22 09:26
$$变量声明
ENTITY/ENT(100)
STRING/AA(5,2),BB(5,2),CC(5,2),DD(5,2),EE(5,2),ATT(10,100)
NUMBER/AA1(5),BB1(5),CC1(5),DD1(5),EE1(5)

DATA/AA,'A1','A2','A5','A4','A5'
DATA/BB,'B1','B2','B5','B4','B5'
DATA/CC,'C1','C2','C5','C4','C5'
DATA/DD,'D1','D2','D5','D4','D5'
DATA/EE,'E1','E2','E5','E4','E5'
P10:
   CHOOSE/'23423423','111','222','333','444','555',RESP
  JUMP/P10:,TRM:,,,T10:,T20:,T30:,T40:,T50:,RESP
T10:
   MCHOOSE/'3453534',AA,AA1,RESP
   JUMP/T10:,TRM:,,RESP
T20:
   MCHOOSE/'3453534',BB,BB1,RESP
   JUMP/T20:,TRM:,,RESP
T30:
   MCHOOSE/'3453534',CC,CC1,RESP
   JUMP/T30:,TRM:,,RESP
T40:
   MCHOOSE/'3453534',DD,DD1,RESP
   JUMP/T40:,TRM:,,RESP
T50:
   MCHOOSE/'3453534',EE,EE1,RESP
   JUMP/T50:,TRM:,,RESP
P20:
  IDENT/'SELECT A ENTIYS',ENT,CNT,NUM,RESP $$NUM需要放在CNT后面。
  JUMP/P20:,TRM:,,RESP
P30:
   ATT(1)='AAA'
   ATT(2)=AA   $$此处不可将一个字符串数组赋给一个字符串数组元素。
   $$可以将一个字符串数组元素赋给一个字符串数组元素。
   $$楼主的设计意图不太明白!
   ATT(3)='BBB'
   ATT(4)=BB  
   ATT(5)='CCC'
   ATT(6)=CC
   ATT(7)='DDD'
   ATT(8)=DD
   ATT(9)='EEE'
   ATT(10)=EE
  ASATT/ENT(1..NUM),ATT(1..10),5 $$修改哪些对象的属性,需要指定。而且还要指定属性的性质。
     $$是字符型还是数值型。5代表字符型。
TRM: $$终止标记.
halt $$终止命令.
作者: xj_05    时间: 2010-6-22 12:42
我是新手思路上表达有些错误

我的意思是:
将一已有的组件赋予属性(属性类型自定义)
我用了数字的方式是可行的,但每次都要手动输入(麻烦)。
但我就是不想在给赋予属性值的时候不要每次去手动输入,想搞成“选择的类别”方式给组件属性赋值
(对值预给多个值待弹出MCHOOSE对话框时选择即可)。

谢谢2楼的指点,但我问题还没解决。
是不是我只要更改下面的语句就可以读到字符串了
ASATT/ENT(1..NUM),ATT(1..10),5
作者: hello_icax    时间: 2010-6-23 12:40
楼主的意图是否如下:
    有5种属性要求用户选择一种.
假设用户选择了CC.
接着要求用户选择这种属性中的某一个或几个属性值.
然后,将用户的选择的属性值赋值到每个对象的属性表内!

如果是这样的目的.我想应该是算法的问题.
稍后我修改一下代码,供你参考.
作者: hello_icax    时间: 2010-6-23 13:52
一下代码不知是否是楼主的意图所在.
本人调试过了.选择对象时必须选择'实体',属性赋值是成功的.

$$变量声明
ENTITY/ENT(100)
STRING/AA(5,2),BB(5,2),CC(5,2),DD(5,2),EE(5,2),ATT(10,100)
NUMBER/AA1(5),BB1(5),CC1(5),DD1(5),EE1(5)


DATA/AA,'A1','A2','A5','A4','A5'
DATA/BB,'B1','B2','B5','B4','B5'
DATA/CC,'C1','C2','C5','C4','C5'
DATA/DD,'D1','D2','D5','D4','D5'
DATA/EE,'E1','E2','E5','E4','E5'

P10:
   CHOOSE/'23423423','111','222','333','444','555',RESP
   JUMP/P10:,TRM:,,,T10:,T20:,T30:,T40:,T50:,RESP

T10:
   MCHOOSE/'3453534',AA,AA1,RESP
   JUMP/T10:,TRM:,,RESP
        COU=0
        DO/LT10:,I,1,5
                IFTHEN/AA1(I)>0
                        COU=COU+1
                        ATT(COU)='AAA'+ISTR(I)
                        COU=COU+1
                        ATT(COU)=AA(I)
                ENDIF
        LT10:
        JUMP/P20:
T20:
   MCHOOSE/'3453534',BB,BB1,RESP
   JUMP/T20:,TRM:,,RESP
        COU=0
        DO/LT20:,I,1,5
                IFTHEN/BB1(I)>0
                        COU=COU+1
                        ATT(COU)='BBB'+ISTR(I)
                        COU=COU+1
                        ATT(COU)=BB(I)
                ENDIF
        LT20:
        JUMP/P20:
T30:
   MCHOOSE/'3453534',CC,CC1,RESP
   JUMP/T30:,TRM:,,RESP
        COU=0
        DO/LT30:,I,1,5
                IFTHEN/CC1(I)>0
                        COU=COU+1
                        ATT(COU)='CCC'+ISTR(I)
                        COU=COU+1
                        ATT(COU)=CC(I)
                ENDIF
        LT30:
        JUMP/P20:
T40:
   MCHOOSE/'3453534',DD,DD1,RESP
   JUMP/T40:,TRM:,,RESP
        COU=0
        DO/LT40:,I,1,5
                IFTHEN/DD1(I)>0
                        COU=COU+1
                        ATT(COU)='DDD'+ISTR(I)
                        COU=COU+1
                        ATT(COU)=DD(I)
                ENDIF
        LT40:
        JUMP/P20:
T50:
   MCHOOSE/'3453534',EE,EE1,RESP
   JUMP/T50:,TRM:,,RESP
        COU=0
        DO/LT50:,I,1,5
                IFTHEN/EE1(I)>0
                        COU=COU+1
                        ATT(COU)='EEE'+ISTR(I)
                        COU=COU+1
                        ATT(COU)=EE(I)
                ENDIF
        LT50:

P20:
        $$MASK/70        $$只选择实体或片体
        IDENT/'SELECT A ENTIYS',ENT,CNT,NUM,RESP        $$NUM需要放在CNT后面。
        JUMP/P20:,TRM:,,RESP

IFTHEN/COU>0
  ASATT/ENT(1..NUM),ATT(1..COU)       
ENDIF

TRM:        $$终止标记.
MESSG/'OK'
halt        $$终止命令.
作者: xj_05    时间: 2010-7-1 19:49
谢谢“hello_icax”兄弟的支持!
我的意思是要同时给予这部件“5个”不同的属性类别,
假如我其中一个选择错误了需要返回更改某个属性时,
之前给予的“5个”值只更改我需要更改我指定的就可,
但其他的“4个”还是保持原始的赋值。
作者: hello_icax    时间: 2010-7-2 08:11
楼主的意思我还是不太理解.
能否讲的详细些,最好配合图表或图形来说明.
作者: qzhitian    时间: 2010-9-4 22:29
回贴是美德
作者: qq421266066    时间: 2011-8-22 14:43
支持下``` {:soso_e100:}
作者: zsj10641    时间: 2011-11-7 10:02
支持下```




欢迎光临 iCAx开思工具箱 (https://t.icax.org/) Powered by Discuz! X3.3