Форум пользователей ПО АСКОН

Профессиональные вопросы => Программирование приложений => Тема начата: Николай от 12.04.16, 11:28:42

Название: Как вывести символ бесконечности для передаточного числа?
Отправлено: Николай от 12.04.16, 11:28:42
Программа считает передачу. При некоторых параметрах выходной вал вращаться не будет. Как вывести символ бесконечности для передаточного числа? Хотя бы код этого символа?
Название: Re: Знак бесконечности
Отправлено: Goran от 12.04.16, 11:37:27
Попробуйте Alt 8734
Название: Re: Знак бесконечности
Отправлено: Алхимик от 12.04.16, 11:41:13
или попробуйте: ^(Arial)+8734~

макрос на запись текста с таким символом получился:
Цитировать# -*- coding: cp1251 -*-
#|11231

import Kompas10API5 as KAPI
import Kompas10API7 as KAPI7
import pythoncom
from win32com.client import Dispatch
import LDefin2D
import LDefin3D
import ksConstants as CONST2D7
import ksConstants3D as CONST3D7
import MiscellaneousHelpers as MH

iKompasObject = Dispatch('KOMPAS.Application.5')
iKompasObject = KAPI.KompasObject(iKompasObject)
MH.iKompasObject = iKompasObject

iApplication = Dispatch('KOMPAS.Application.7')
iApplication = KAPI7.IApplication(iApplication)
MH.iApplication = iApplication

iDocument2D = iKompasObject.ActiveDocument2D()
iDocument = iApplication.ActiveDocument
iKompasDocument2D = KAPI7.IKompasDocument2D(iDocument)


iParagraphParam = KAPI.ksParagraphParam(iKompasObject.GetParamStruct(LDefin2D.ko_ParagraphParam))
iParagraphParam.Init()
iParagraphParam.x = 43.12708333333
iParagraphParam.y = -23.54791666666
iParagraphParam.ang = 0.0
iParagraphParam.height = 4.99506902694
iParagraphParam.width = 8.40452003479
iParagraphParam.hFormat = 0
iParagraphParam.vFormat = 0
iParagraphParam.style = 1

iDocument2D.ksParagraph(iParagraphParam)

iTextLineParam = KAPI.ksTextLineParam(iKompasObject.GetParamStruct(LDefin2D.ko_TextLineParam))
iTextLineParam.Init()
iTextLineParam.style = 1

iTextItemArray = KAPI.ksDynamicArray(iKompasObject.GetDynamicArray(4))

iTextItemParam = KAPI.ksTextItemParam(iKompasObject.GetParamStruct(LDefin2D.ko_TextItemParam))
iTextItemParam.Init()
iTextItemParam.iSNumb = 0
iTextItemParam.s = "^(Arial)+8734"
iTextItemParam.type = 0

iTextItemFontParam = KAPI.ksTextItemFont(iTextItemParam.GetItemFont())
iTextItemFontParam.Init()
iTextItemFontParam.bitVector = 4096
iTextItemFontParam.color = 0
iTextItemFontParam.fontName = "GOST type A"
iTextItemFontParam.height = 3.5
iTextItemFontParam.ksu = 1.0

iTextItemArray.ksAddArrayItem(-1, iTextItemParam)

iTextLineParam.SetTextItemArr(iTextItemArray)
iDocument2D.ksTextLine(iTextLineParam)

obj = iDocument2D.ksEndObj()

~ - знак не ставил и без него макрос сработал.
Название: Re: Знак бесконечности
Отправлено: Николай от 12.04.16, 12:48:22
Итак и сяк- не берёт... Бейсик.

Label11.FontName = Arial
Label11.Caption = "^(Arial)+8734"
Label11.Caption =  Chr(4571)               вообще ошибка...
Название: Re: Знак бесконечности
Отправлено: Алхимик от 12.04.16, 12:56:17
Ну а какие нить символы вы уже вставляли? программно. Попробуйте сюда добавить свой символ и ссылаться программно на эту ячейку.
Название: Re: Знак бесконечности
Отправлено: Goran от 12.04.16, 12:59:27
Цитата: Николай от 12.04.16, 12:48:22
....
Label11.Caption =  Chr(4571)               вообще ошибка...
А так,
Chr(221Е)
Название: Re: Как вывести символ бесконечности для передаточного числа?
Отправлено: Sabahs от 12.04.16, 13:09:09
Наверно так:
ChrW(8734)
хотя не факт.
https://msdn.microsoft.com/en-us/library/613dxh46(v=vs.90).aspx (https://msdn.microsoft.com/en-us/library/613dxh46(v=vs.90).aspx)
Название: Re: Как вывести символ бесконечности для передаточного числа?
Отправлено: Николай от 12.04.16, 14:45:53
Да, не факт... Все варианты выдают синтаксический Error.
Ну, не получается бесконечность- написал простую русскую букву "Х". При вращении входного вала  выходной вращаться не будет. Типа Х вам. Ассотиативненько так... :)

Всем спасибо за расширение кругозора!
Название: Re: Как вывести символ бесконечности для передаточного числа?
Отправлено: Алхимик от 12.04.16, 14:50:39
Цитата: Алхимик от 12.04.16, 12:56:17
Попробуйте сюда добавить свой символ и ссылаться программно на эту ячейку.
Думал отсюда компас берет символы... оказалось эта таблица для справок. Ибо изменяю или нет, символы остаются те же. Хотя наверное просто не умею их готовить :shu:
Название: Re: Как вывести символ бесконечности для передаточного числа?
Отправлено: Денис СГА от 12.04.16, 15:28:02
У меня сработало
ChrW(8734)
Название: Re: Как вывести символ бесконечности для передаточного числа?
Отправлено: Николай от 12.04.16, 16:17:28
А в какой среде программирования сработало? У меня  Бейсик 6, шрифт MS Sans Serif.
Название: Re: Как вывести символ бесконечности для передаточного числа?
Отправлено: Денис СГА от 13.04.16, 08:41:54
У меня офисный VBS. Вывел значок в компасовский текст. На форме не проверял
Название: Re: Как вывести символ бесконечности для передаточного числа?
Отправлено: pr0100 от 13.04.16, 09:38:58
Vba работает
Уберите из кода строку:
Label11.Caption = "^(Arial)+8734"

(https://forum.ascon.ru/proxy.php?request=http%3A%2F%2Fcs636627.vk.me%2Fv636627934%2F8e3%2F4taVybnRX_E.jpg&hash=4e403a6af770edc329c49601a29cae5f5dea3b85)
Название: Re: Как вывести символ бесконечности для передаточного числа?
Отправлено: Николай от 13.04.16, 12:16:44
Тут, наверное, картинка была? (где крестик).
Если убрать из кода строку, то как на Label.Caption вообще что-нибудь назначить?
Название: Re: Знак бесконечности
Отправлено: Алхимик от 13.04.16, 12:27:13
Цитата: Николай от 12.04.16, 12:48:22
Label11.FontName = Arial
Label11.Caption = "^(Arial)+8734"                СТРОКА №1
Label11.Caption =  Chr(4571)                       СТРОКА №2

Просто у вас идет дублирование, что Строкой №1, что строкой №2 Вы пытаетесь получить знак бесконечности, но программа останавливает выполнение на строке №1. И для бейсика она не корректна.

Может и ошибусь, но посмотрите на пример Про100. Одному лейблу соответствует 1 номер. Т.е. вы добавляете избыточные ограничения.
Название: Re: Как вывести символ бесконечности для передаточного числа?
Отправлено: Sabahs от 13.04.16, 12:42:55
Функция Chr    - работает с типом байт -  0...255.
Функция ChrW - работает с типом слово - 0...65535.
Поэтому Chr(4571) - 100% ошибка.
Название: Re: Как вывести символ бесконечности для передаточного числа?
Отправлено: Николай от 13.04.16, 13:28:42
Алхимику: это- строки разных вариантов, что пробовались, а не цельный кусок кода. :)
Вот, pr0100 что-то прислал в виде картинки, наверное, а мой браузер отобразить не может. Чёрный квадратик с крестиком... Может, кто-нибудь, перешлёт, что там в натуре? :shu:
Название: Re: Как вывести символ бесконечности для передаточного числа?
Отправлено: Алхимик от 13.04.16, 13:52:14
Вот картинка.
Название: Re: Как вывести символ бесконечности для передаточного числа?
Отправлено: Николай от 13.04.16, 15:59:10
Спасибо за картинку, повторил один в один, но, видно, 6 Бейсик не берёт такие символы...(А, может, где-то в глубине и есть какие-нибудь настройки). На все изыски выводит знак вопроса- знак того, что запрос не распознан.  Ещё раз всем спасибо.
Название: Re: Как вывести символ бесконечности для передаточного числа?
Отправлено: pr0100 от 14.04.16, 11:28:22
Цитата: Николай от 13.04.16, 15:59:10
Спасибо за картинку, повторил один в один, но, видно, 6 Бейсик не берёт такие символы...(А, может, где-то в глубине и есть какие-нибудь настройки). На все изыски выводит знак вопроса- знак того, что запрос не распознан.  Ещё раз всем спасибо.

Один в один не нужно было повторять, если я не ошибаюсь у VB6 другой код инициализации
Vba, как у меня:
Private Sub UserForm_Initialize()

На VB6 должно быть:
Private Sub Form_Initialize()

Если получится, сообщите результат.




Название: Re: Как вывести символ бесконечности для передаточного числа?
Отправлено: Николай от 14.04.16, 11:55:23
Сообщаю результат:
Конечно, не один в один. :)
Но результат- прежний: символ не распознан.
Попытка вставки в инициализацию- лишь проба способа. Ведь символ должен появляться по ходу расчёта в различных "Private Sub..."  Но не работает нигде.
Название: Re: Как вывести символ бесконечности для передаточного числа?
Отправлено: Aleksei от 14.04.16, 22:55:32
Судя по картинке, пишете в VB6.
Его стандартные компоненты напрямую Юникод не выводят, вместо этого появляется знак вопроса. Есть пользовательские компоненты, которые позволяют это сделать. Один из вариантов лежит здесь: 
http://www.vbforums.com/showthread.php?500026-VB6-UniControls-Summer-Release-2008-06-19
Суть в том, что вы добавляете в свой проект нужный компонент, например, UniLabel, и используете его вместо стандартного Label. В нем нормально сработает ChrW (8734). Проверял на Win10 и VB6.
Название: Re: Как вывести символ бесконечности для передаточного числа?
Отправлено: Николай от 15.04.16, 09:51:44
Сложноватенько... Но коллеги из АСУП помогли и появилась БЕСКОНЕЧНОСТЬ ! :)
(Спасибо Алексею)
Название: Re: Как вывести символ бесконечности для передаточного числа?
Отправлено: Алхимик от 15.04.16, 10:14:58
Решением не поделитесь? Ну для общего развития :shu:
Название: Re: Как вывести символ бесконечности для передаточного числа?
Отправлено: Николай от 15.04.16, 10:24:34
А сообщите в личке адрес эл.почты. Возможно, объём немаленький, зачем загромождать Форум.