Segue o mail que enviei ao Augusto, da Autodesk:
Baseado na minha experinecia com a api do civil 3d 2012
PipeNetworks
corrigir o erro ao definir estilo de uma Part qualquer:
Dim obj As Part
Dim styleId As ObjectID
'...
obj.StyleId = styleId 'erro
O mesmo para RefSurfaceId, se o id da superficie for nulo:
obj.RefSurfaceId = ObjectId.Null
causa erro
falta o na API .NET o método SwapPartFamilyAndSize da API COM
>obj.PartData.GetAllDataFields
não devolve todas as Fields que o equivalente da API COM
Não há nenhum método ou propriedade nas estruturas que devolva a área de contribuição ou talvegue mesmo que associemos o CatchmentArea à estrutura
Ah, aproveitando, aqui está acontecendo algo estranho:
se referencio uma pipenetwork de outro desenho, via DataShortCut e projeto os elementos num profileview, ao salvar o arquivo, fechar a ebrir novamente, as projeções somem, mesmo com o SP1 instalado.
E ainda:
O campo Description dos tubos e estruturas que deveria ser somente leitura neste caso (DataShortCut ), não é
Se defino um valor diferente daquele que está no desenho de origem, ao sincronizar, a edição é perdida
Também o estilo, reference surface e referece alignment. Se coloco um diferente, ao reabrir o desenho, as edições se perdem
Alinhamentos:
Propriedade que informe a forma que o alinhamento mostra os PIs (aba "Point of Intersection" do "alignment properties")
Método que devolva os PIs, reais ou calculados
A função:
_ALIN.GetStationSet(StationTypes.Major Or StationTypes.Minor, 100, 20)
Devolve stations em posições não inteiras se o alinnhamento tiver Station Equation.
Exemplo: se defino uma station equation onde:
a estaca "5+00" passa a ser "5+10"
com station index = 20 (no brasil é 20...)
(station back=100, station ahead=110) por exemplo,
a função me retorna estacas: ...80, 100, 120, 140...
mas eu creio que deveria retornar ...80,100, 110, 130...
Ou seja, uma lista que formatada coma função GetStationStringWithEquations, devolvesse sempre valores "cheios",exemplo: "5+00", "6+00"... e não "5+10"
Implementar as propriedades Length, StartPoint, StarStation, etc na classe AlignmentSubEntity,
já que AlignmentSubEntityArc, AlignmentSubEntityLine, AlignmentSubEntitySpiral as implementam
se implementar em
AlignmentEntity também, melhor ainda
Ah, estas propriedades falharam algumas vezes com AlignmentSubEntitySpiral...
Corridor
Dim st As CodeSetStyle = ....
For Each s As CodeSetStyleItem In st
'faz algo
Next
só itera sobre os Points, não lista os links nem as shapes
API para acessar as Slope Pattern e as surfaces boundaries
bs.BaselineRegions.AddRegion deveria aceitar startstation e endstation
só é possivel definir a assembly e o nome
>Dim bsr As BaselineRegion
bsr.StartStation e bsr.EndStation deveriam ser read/write,mas são readonly
também não dá pra definir os target da assemply aplicada
Assemblies
faltam labels para elas, nem que seja pra mostrar só no nome....
Sample Line Group
Dim slg as SampleLineGroup...
Falta um método/função equivalente ao
slg.GetTotalVolumeResultDataForMaterialList
que liste os materiais individualmente
tentei com:
Dim guidMaterialList As System.Guid = slg.GetMappingGuid(materialListName)
Dim guidCorte As System.Guid = slg.GetMaterialGuid(guidMaterialList , "corte")
slg.GetTotalVolumeResultDataForMaterialList(guidCorte)
mas isso dá erro. pois só aceita :
slg.GetTotalVolumeResultDataForMaterialList(guidMaterialList)
o que achei estranho, pois ate onde eu testei, so pode ter um material list na sample line group :
For Each r As Autodesk.Civil.QTO.DatabaseServices.QTOSectionalResult In _
slg.GetTotalVolumeResultDataForMaterialList(guidCorte).GetResultsAlongSampleLines
'como obter a estaca???
Next
a classe QTOSectionalResult não implementa uma forma de devolver a estaca.
em nenhuma das classes do QTO dá pra obter os fatores (Cut, Fill, Refill)
SectionView
Faltam as propriedades ElevationMax, ElevationMin equivalentes às dos profileview
e também OffsetLeft e OffsetRight, equivalentes ao StartStation e EndStation do profileview
Labels:
uma propriedade equivalente ao FeatureId, para labels que tem componentes reference text.
exemplo:
label de alinhamento, que tem reference text para profile.
como setar/obter qual é o ObjectID do profile associado?
Profile
apesar de poder mudar a propriedade Station dos PVI, seria interessante um método que aplicasse um deltaa todos os PVI ao mesmo tempo. Isso possibilitaria "atrazar" ou "adiantar" o greide projetado em relação aoestaqueamento do alinhamento, resolvendo o problema de mudar o Reference Station do alinnhamento.
no mais é isso
se me ocorrer mais alguma coisa e mando
até!!!
Este foi o email, Augusto, obrigado pela atenção!! E você, o que precisa da API que não conseguiu, ou não encontrou?
Baseado na minha experinecia com a api do civil 3d 2012
PipeNetworks
corrigir o erro ao definir estilo de uma Part qualquer:
Dim obj As Part
Dim styleId As ObjectID
'...
obj.StyleId = styleId 'erro
O mesmo para RefSurfaceId, se o id da superficie for nulo:
obj.RefSurfaceId = ObjectId.Null
causa erro
falta o na API .NET o método SwapPartFamilyAndSize da API COM
>obj.PartData.GetAllDataFields
não devolve todas as Fields que o equivalente da API COM
Não há nenhum método ou propriedade nas estruturas que devolva a área de contribuição ou talvegue mesmo que associemos o CatchmentArea à estrutura
Ah, aproveitando, aqui está acontecendo algo estranho:
se referencio uma pipenetwork de outro desenho, via DataShortCut e projeto os elementos num profileview, ao salvar o arquivo, fechar a ebrir novamente, as projeções somem, mesmo com o SP1 instalado.
E ainda:
O campo Description dos tubos e estruturas que deveria ser somente leitura neste caso (DataShortCut ), não é
Se defino um valor diferente daquele que está no desenho de origem, ao sincronizar, a edição é perdida
Também o estilo, reference surface e referece alignment. Se coloco um diferente, ao reabrir o desenho, as edições se perdem
Alinhamentos:
Propriedade que informe a forma que o alinhamento mostra os PIs (aba "Point of Intersection" do "alignment properties")
Método que devolva os PIs, reais ou calculados
A função:
_ALIN.GetStationSet(StationTypes.Major Or StationTypes.Minor, 100, 20)
Devolve stations em posições não inteiras se o alinnhamento tiver Station Equation.
Exemplo: se defino uma station equation onde:
a estaca "5+00" passa a ser "5+10"
com station index = 20 (no brasil é 20...)
(station back=100, station ahead=110) por exemplo,
a função me retorna estacas: ...80, 100, 120, 140...
mas eu creio que deveria retornar ...80,100, 110, 130...
Ou seja, uma lista que formatada coma função GetStationStringWithEquations, devolvesse sempre valores "cheios",exemplo: "5+00", "6+00"... e não "5+10"
Implementar as propriedades Length, StartPoint, StarStation, etc na classe AlignmentSubEntity,
já que AlignmentSubEntityArc, AlignmentSubEntityLine, AlignmentSubEntitySpiral as implementam
se implementar em
AlignmentEntity também, melhor ainda
Ah, estas propriedades falharam algumas vezes com AlignmentSubEntitySpiral...
Corridor
Dim st As CodeSetStyle = ....
For Each s As CodeSetStyleItem In st
'faz algo
Next
só itera sobre os Points, não lista os links nem as shapes
API para acessar as Slope Pattern e as surfaces boundaries
bs.BaselineRegions.AddRegion deveria aceitar startstation e endstation
só é possivel definir a assembly e o nome
>Dim bsr As BaselineRegion
bsr.StartStation e bsr.EndStation deveriam ser read/write,mas são readonly
também não dá pra definir os target da assemply aplicada
Assemblies
faltam labels para elas, nem que seja pra mostrar só no nome....
Sample Line Group
Dim slg as SampleLineGroup...
Falta um método/função equivalente ao
slg.GetTotalVolumeResultDataForMaterialList
que liste os materiais individualmente
tentei com:
Dim guidMaterialList As System.Guid = slg.GetMappingGuid(materialListName)
Dim guidCorte As System.Guid = slg.GetMaterialGuid(guidMaterialList , "corte")
slg.GetTotalVolumeResultDataForMaterialList(guidCorte)
mas isso dá erro. pois só aceita :
slg.GetTotalVolumeResultDataForMaterialList(guidMaterialList)
o que achei estranho, pois ate onde eu testei, so pode ter um material list na sample line group :
For Each r As Autodesk.Civil.QTO.DatabaseServices.QTOSectionalResult In _
slg.GetTotalVolumeResultDataForMaterialList(guidCorte).GetResultsAlongSampleLines
'como obter a estaca???
Next
a classe QTOSectionalResult não implementa uma forma de devolver a estaca.
em nenhuma das classes do QTO dá pra obter os fatores (Cut, Fill, Refill)
SectionView
Faltam as propriedades ElevationMax, ElevationMin equivalentes às dos profileview
e também OffsetLeft e OffsetRight, equivalentes ao StartStation e EndStation do profileview
Labels:
uma propriedade equivalente ao FeatureId, para labels que tem componentes reference text.
exemplo:
label de alinhamento, que tem reference text para profile.
como setar/obter qual é o ObjectID do profile associado?
Profile
apesar de poder mudar a propriedade Station dos PVI, seria interessante um método que aplicasse um deltaa todos os PVI ao mesmo tempo. Isso possibilitaria "atrazar" ou "adiantar" o greide projetado em relação aoestaqueamento do alinhamento, resolvendo o problema de mudar o Reference Station do alinnhamento.
no mais é isso
se me ocorrer mais alguma coisa e mando
até!!!
Este foi o email, Augusto, obrigado pela atenção!! E você, o que precisa da API que não conseguiu, ou não encontrou?