Đến nội dung


Hình ảnh
- - - - -

Lỗi Do Thiếu Font Hay Lỗi Do Lisp


  • Please log in to reply
2 replies to this topic

#1 mrphuocvie

mrphuocvie

    biết vẽ ellipse

  • Members
  • PipPip
  • 50 Bài viết
Điểm đánh giá: -8 (bình thường)

Đã gửi 26 February 2016 - 10:52 PM

Chào cadviet.com,

Em có sửa đoạn code để làm công việc riêng của mình, song nó có nảy ra 1 vấn đề là BỊ LỖI FONT.

Em đã trình bày vấn đề này trong file .dwg, nhờ mọi người xem qua và chỉ em cách giải quyết.

Vấn đề ở đây em thấy kỳ lạ là: Nếu vì bị thiếu font thì trong mọi lúc nó sẽ không hiển thị được (Bản vẽ tiếng Nhật), nhưng ở đây, text sẽ bị lỗi font trong quá trình thực hiện lệnh. Để dễ hiểu mọi người hãy run lệnh đó giúp em.

Cảm ơn!132006_01_1.png

;GetAtt
	(defun GetAtt (obj)
		(mapcar '(lambda (att) (cons (vla-get-TagString att) (vla-get-TextString att))) (vlax-invoke obj 'GetAttributes)))
;SetAtt
	(defun SetAtt (obj lst / attval)
		(mapcar '(lambda (att) (if (setq attval (cdr (assoc (vla-get-TagString att) lst))) (vla-put-TextString att attval))) (vlax-invoke obj 'GetAttributes))
		(vla-update obj))
;tao ham con
	(defun Asign_Att (tag_txt tag_Att / txt_i Att_i lst lst1 lst2 lst3)
		(setq txt_i (cdr (assoc 1 (entget (car (entsel (strcat "\nSelect text for " tag_txt ": ")))))))
		(setq Att_i tag_Att)
		(foreach obj objlst
			(setq lst (GetAtt obj))
			(foreach lst1 lst
				(if (= (strcase (car lst1)) (strcase Att_i))
					(setq lst2 (cons (car lst1) txt_i))
					(setq lst2 lst1))
				(setq lst3 (cons lst2 lst3)))
			(SetAtt obj lst3)))
;Main code SHIAGE
(defun C:SHIAGE ()
	(vl-load-com)
	(princ "\nSelect DynamicBlock '0-Shiage_Obayashi': ")
	(setq ss (ssget (list (cons 0 "insert"))))
	(setq objlst (mapcar 'vlax-ename->vla-object (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss)))))
	;Thay the text_0i cho Att_0i-----------------------------------------------------
	(Asign_Att "室 名" "S01")
	(Asign_Att "CH=" "S02")
	(Asign_Att "FL" "S03")
	(Asign_Att "天井 仕上" "S04")
	(Asign_Att "天井 下地" "S05")
	(Asign_Att "廻縁" "S06")
	(Asign_Att "壁 仕上" "S07")
	(Asign_Att "壁 下地" "S08")
	(Asign_Att "巾木" "S09")
	(Asign_Att "床 仕上" "S10")
	(Asign_Att "床 下地" "S11")
	(Asign_Att "備考_1" "S12")
	(Asign_Att "備考_2" "S13")
	(Asign_Att "(巾木)H=" "S14")
	(Asign_Att "準" "S15")
	(princ)
)
;Main code TAG_D&W
(defun C:TAGDW ()
	(vl-load-com)
	(princ "\nSelect DynamicBlock '0-Tag_DW_Obayashi': ")
	(setq ss (ssget (list (cons 0 "insert"))))
	(setq objlst (mapcar 'vlax-ename->vla-object (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss)))))
	;Thay the text_0i cho Att_0i-----------------------------------------------------
	(Asign_Att "建具符号(Name)" "D01")
	(Asign_Att "建具番号(Type)" "D02")
	(Asign_Att "W=" "D03")
	(Asign_Att "H=" "D04")
	(Asign_Att "h=" "D05")
	(Asign_Att "電気錠(E)" "D06")
	(Asign_Att "防火性能" "D07")
	(Asign_Att "建具特記(SAT, PAT)" "D08")
	(princ)
) 

File .dwg

http://www.cadviet.c...5/132006_02.dwg


  • 0

#2 quocmanh04tt

quocmanh04tt

    biết lệnh imageclip

  • Members
  • PipPipPipPipPipPipPip
  • 673 Bài viết
Điểm đánh giá: 315 (khá)

Đã gửi 26 February 2016 - 11:08 PM

Dự là do hàm vla-put-TextString nằm trong hàm SetAtt. Tiếng việt có dấu cũng thường bị lỗi do hàm của VLISP.


  • 0

#3 ndtnv

ndtnv

    biết lệnh minsert

  • Members
  • PipPipPipPipPipPip
  • 437 Bài viết
Điểm đánh giá: 384 (khá)

Đã gửi 27 February 2016 - 09:42 AM

Lỗi này là do code page không tương  thích

 

Nếu máy bạn có SYSCODEPAGE = ANSI_932 open file lisp trong vilde sẽ thấy các text không còn là tiếng Nhật.

Cách sửa trong vlide:

- Xoá các ký tự lạ

- Đánh lại nội dung bằng tiếng Nhật


  • 1